diff options
Diffstat (limited to 'plugins/jetpack/sync/class.jetpack-sync-module-meta.php')
-rw-r--r-- | plugins/jetpack/sync/class.jetpack-sync-module-meta.php | 50 |
1 files changed, 27 insertions, 23 deletions
diff --git a/plugins/jetpack/sync/class.jetpack-sync-module-meta.php b/plugins/jetpack/sync/class.jetpack-sync-module-meta.php index b0e70355..d1b07b67 100644 --- a/plugins/jetpack/sync/class.jetpack-sync-module-meta.php +++ b/plugins/jetpack/sync/class.jetpack-sync-module-meta.php @@ -70,46 +70,50 @@ class Jetpack_Sync_Module_Meta extends Jetpack_Sync_Module { } public function init_listeners( $callable ) { - $whitelist_handler = array( $this, 'filter_meta' ); - foreach ( $this->meta_types as $meta_type ) { add_action( "added_{$meta_type}_meta", $callable, 10, 4 ); add_action( "updated_{$meta_type}_meta", $callable, 10, 4 ); add_action( "deleted_{$meta_type}_meta", $callable, 10, 4 ); + $whitelist_handler = array( $this, 'filter_meta_' . $meta_type ); add_filter( "jetpack_sync_before_enqueue_added_{$meta_type}_meta", $whitelist_handler ); add_filter( "jetpack_sync_before_enqueue_updated_{$meta_type}_meta", $whitelist_handler ); add_filter( "jetpack_sync_before_enqueue_deleted_{$meta_type}_meta", $whitelist_handler ); } } + // POST Meta + function get_post_meta_whitelist() { + return Jetpack_Sync_Settings::get_setting( 'post_meta_whitelist' ); + } - /** - * Should we allow the meta key to be synced? - * - * @param string $meta_key The meta key. - * - * @return bool - */ - function is_meta_key_allowed( $meta_key ) { - if ( '_' === $meta_key[0] && - ! in_array( $meta_key, Jetpack_Sync_Defaults::$default_whitelist_meta_keys ) && - ! wp_startswith( $meta_key, '_wpas_skip_' ) - ) { - return false; - } + function is_whitelisted_post_meta( $meta_key ) { + // _wpas_skip_ is used by publicize + return in_array( $meta_key, $this->get_post_meta_whitelist() ) || wp_startswith( $meta_key, '_wpas_skip_' ); + } - if ( in_array( $meta_key, Jetpack_Sync_Settings::get_setting( 'meta_blacklist' ) ) ) { - return false; - } + // Comment Meta + function get_comment_meta_whitelist() { + return Jetpack_Sync_Settings::get_setting( 'comment_meta_whitelist' ); + } - return true; + function is_whitelisted_comment_meta( $meta_key ) { + return in_array( $meta_key, $this->get_comment_meta_whitelist() ); } - function filter_meta( $args ) { - if ( ! $this->is_meta_key_allowed( $args[2] ) ) { + function is_post_type_allowed( $post_id ) { + $post = get_post( $post_id ); + return ! in_array( $post->post_type, Jetpack_Sync_Settings::get_setting( 'post_types_blacklist' ) ); + } + + function filter_meta_post( $args ) { + if ( ! $this->is_whitelisted_post_meta( $args[2] ) ) { return false; } + return ( $this->is_post_type_allowed( $args[1] ) ? $args : false ); + } - return $args; + function filter_meta_comment( $args ) { + return ( $this->is_whitelisted_comment_meta( $args[2] ) ? $args : false ); } + } |