/** * Registers custom meta keys with WordPress and provides callbacks for sanitizing and authorizing * the metadata. * * @since 1.0.0 * @access public * @return void */ function mb_register_meta() { /* General post meta. */ register_meta('post', mb_get_prev_status_meta_key(), 'sanitize_key', '__return_true'); /* Forum meta. */ register_meta('post', mb_get_forum_activity_datetime_meta_key(), 'esc_html', '__return_true'); register_meta('post', mb_get_forum_activity_datetime_epoch_meta_key(), 'esc_html', '__return_true'); register_meta('post', mb_get_forum_last_topic_id_meta_key(), 'absint', '__return_true'); register_meta('post', mb_get_forum_last_reply_id_meta_key(), 'absint', '__return_true'); register_meta('post', mb_get_forum_subforum_count_meta_key(), 'absint', '__return_true'); register_meta('post', mb_get_forum_topic_count_meta_key(), 'absint', '__return_true'); register_meta('post', mb_get_forum_reply_count_meta_key(), 'absint', '__return_true'); register_meta('post', mb_get_forum_type_meta_key(), 'esc_html', '__return_true'); register_meta('post', mb_get_forum_level_meta_key(), 'absint', '__return_true'); /* Topic meta. */ register_meta('post', mb_get_topic_activity_datetime_meta_key(), 'esc_html', '__return_true'); register_meta('post', mb_get_topic_activity_datetime_epoch_meta_key(), 'esc_html', '__return_true'); register_meta('post', mb_get_topic_last_reply_id_meta_key(), 'absint', '__return_true'); register_meta('post', mb_get_topic_voices_meta_key(), 'esc_html', '__return_true'); register_meta('post', mb_get_topic_voice_count_meta_key(), 'absint', '__return_true'); register_meta('post', mb_get_topic_reply_count_meta_key(), 'absint', '__return_true'); register_meta('post', mb_get_topic_type_meta_key(), 'esc_html', '__return_true'); /* User meta. */ register_meta('user', mb_get_user_forum_subscriptions_meta_key(), 'esc_html', '__return_true'); register_meta('user', mb_get_user_topic_subscriptions_meta_key(), 'esc_html', '__return_true'); register_meta('user', mb_get_user_topic_bookmarks_meta_key(), 'esc_html', '__return_true'); register_meta('user', mb_get_user_forum_count_meta_key(), 'absint', '__return_true'); register_meta('user', mb_get_user_topic_count_meta_key(), 'absint', '__return_true'); register_meta('user', mb_get_user_reply_count_meta_key(), 'absint', '__return_true'); }
/** * Registers the team member meta with their sanitization functions */ function register_team_member_meta() { register_meta('post', get_team_member_title_meta_key(), 'sanitize_text_field', '__return_true'); register_meta('post', get_team_member_twitter_meta_key(), 'sanitize_text_field', '__return_true'); register_meta('post', get_team_member_github_meta_key(), 'esc_url', '__return_true'); register_meta('post', get_team_member_wordpress_meta_key(), 'esc_url', '__return_true'); }
/** * Registers the Project meta with their sanitization functions */ function register_project_meta() { register_meta('post', get_project_tagline_meta_key(), 'sanitize_text_field', '__return_true'); register_meta('post', get_project_github_meta_key(), 'esc_url', '__return_true'); register_meta('post', get_project_lead_meta_key(), 'FZ_Projects\\Team_Members\\sanitize_team_member_id', '__return_true'); register_meta('post', get_project_team_members_meta_key(), 'FZ_Projects\\Team_Members\\sanitize_team_member_id', '__return_true'); }
/** * Registers all the hooks */ function register_hooks() { // Hook in to URL generation $this->hook('page_link', 'link', 20); $this->hook('post_link', 'link', 20); $this->hook('post_type_link', 'link', 20); $this->hook('attachment_link', 'link', 20); // Non-standard priority hooks $this->hook('do_meta_boxes', 20); $this->hook('wp_footer', 19); $this->hook('wp_enqueue_scripts', 'start_buffer', -9999); $this->hook('wp_head', 'end_buffer', 9999); // Non-standard callback hooks $this->hook('load-post.php', 'load_post'); // Standard hooks $this->hook('wp_list_pages'); $this->hook('template_redirect'); $this->hook('save_post'); $this->hook('edit_attachment'); $this->hook('wp_nav_menu_objects'); $this->hook('plugin_row_meta'); // Metadata validation grants users editing privileges for our custom fields register_meta('post', self::LINK_META_KEY, null, '__return_true'); register_meta('post', self::TARGET_META_KEY, null, '__return_true'); }
public function metaFieldsRegister($fields) { foreach ($fields as $field) { $id = $field['id']; register_meta('post', $id, [$this, 'metaFieldsSanitize'], '__return_true'); } }
/** * Registers custom metadata for the plugin. * * @since 0.1.0 * @access public * @return void */ function ccp_register_meta() { register_meta('post', 'url', 'esc_url_raw', '__return_false'); register_meta('post', 'client', 'wp_strip_all_tags', '__return_false'); register_meta('post', 'location', 'wp_strip_all_tags', '__return_false'); register_meta('post', 'start_date', 'wp_strip_all_tags', '__return_false'); register_meta('post', 'end_date', 'wp_strip_all_tags', '__return_false'); }
function test_sanitize_meta() { $meta = sanitize_meta('some_meta', 'unsanitized', 'post'); $this->assertEquals('unsanitized', $meta); register_meta('post', 'some_meta', array($this, '_meta_sanitize_cb')); $meta = sanitize_meta('some_meta', 'unsanitized', 'post'); $this->assertEquals('sanitized', $meta); }
/** * Register activity metadata keys & sanitization callbacks * * @since 0.1.0 */ function wp_user_activity_register_post_metadata() { register_meta('post', 'wp_user_activity_object_type', 'wp_user_activity_sanitize_object_type'); register_meta('post', 'wp_user_activity_object_subtype', 'wp_user_activity_sanitize_object_subtype'); register_meta('post', 'wp_user_activity_object_name', 'wp_user_activity_sanitize_object_name'); register_meta('post', 'wp_user_activity_object_id', 'wp_user_activity_sanitize_object_id'); register_meta('post', 'wp_user_activity_action', 'wp_user_activity_sanitize_object_action'); }
/** * Register the meta for the post types that support `genesis-simple-schema`. * * @since 0.9.0 */ public function register_meta() { foreach ((array) get_post_types(array('public' => true)) as $type) { foreach ((array) $this->custom_field_sanitization as $key => $sanitize_callback) { register_meta($type, $key, $sanitize_callback); } } }
function prefix_portfolio_register_meta() { /* Register post meta (note: you might want to alter the callbacks). */ register_meta('post', 'url', 'esc_url_raw', '__return_false'); register_meta('post', 'client', 'strip_tags', '__return_false'); register_meta('post', 'location', 'strip_tags', '__return_false'); register_meta('post', 'start_date', 'strip_tags', '__return_false'); register_meta('post', 'end_date', 'strip_tags', '__return_false'); }
function __construct($args) { /* * Use the built-in API to "register" meta, * i.e. set sanitization and authorization callbacks on the right filters. */ register_meta('post', $args['key'], $args['sanitization_callback'], $args['authentication_callback']); foreach ($args as $key => $val) { $this->{$key} = $val; } }
/** * Registers all postmeta keys used and assigns the default * method used for escaping when using add_post_meta or edit_post_meta * @access public */ public function register_meta_keys() { register_meta('post', 'files_changed', 'absint'); register_meta('post', 'branch', 'wp_kses'); register_meta('post', 'commit_hash', 'wp_kses'); register_meta('post', 'db_hash', 'wp_kses'); register_meta('post', 'committed_files', array('Revisr_Admin', 'esc_attr_array')); register_meta('post', 'git_tag', 'esc_attr'); register_meta('post', 'backup_method', 'esc_attr'); register_meta('post', 'commit_status', 'esc_attr'); register_meta('post', 'error_details', array('Revisr_Admin', 'esc_attr_array')); }
/** * Register alert metadata keys & sanitization callbacks * * @since 0.1.0 */ function wp_user_alerts_register_metadata() { // Posts register_meta('post', 'wp_user_alerts_role', 'wp_user_alerts_sanitize_role'); register_meta('post', 'wp_user_alerts_user', 'wp_user_alerts_sanitize_user'); register_meta('post', 'wp_user_alerts_method', 'wp_user_alerts_sanitize_method'); register_meta('post', 'wp_user_alerts_priority', 'wp_user_alerts_sanitize_priority'); register_meta('post', 'wp_user_alerts_user_group', 'wp_user_alerts_sanitize_user_group'); // Users register_meta('user', 'cellular_number', 'wp_user_alerts_sanitize_cellular_number'); register_meta('user', 'cellular_carrier', 'wp_user_alerts_sanitize_cellular_carrier'); }
/** * Registers all event meta fields and their sanitization callbacks. * * By defining this globally it is no longer necessary to manually sanitize data when * saving it to the database (eg. in the admin or during the import). * * @since 0.11 * @return void */ public function register_event_meta() { register_meta('post', 'event_date', array($this, 'sanitize_event_date')); register_meta('post', 'enddate', array($this, 'sanitize_enddate')); register_meta('post', 'venue', 'sanitize_text_field'); register_meta('post', 'city', 'sanitize_text_field'); register_meta('post', 'remark', 'sanitize_text_field'); register_meta('post', 'tickets_url', 'sanitize_text_field'); register_meta('post', 'tickets_button', 'sanitize_text_field'); register_meta('post', 'tickets_status', 'sanitize_text_field'); register_meta('post', '_wpt_event_tickets_price', array($this, 'sanitize_event_tickets_price')); }
/** * Registers the framework's custom metadata keys and sets up the sanitize callback function. * * @since 0.9.0 * @return void */ function omega_register_meta() { /* Register meta if the theme supports the 'omega-template-hierarchy' feature. */ if (current_theme_supports('omega-template-hierarchy')) { $post_types = get_post_types(array('public' => true)); foreach ($post_types as $post_type) { if ('page' !== $post_type) { register_meta('post', "_wp_{$post_type}_template", 'omega_sanitize_meta'); } } } }
/** * set up all actions for adding featured images to taxonomies * @since 2.0.0 */ public function set_taxonomy_meta() { register_meta('term', 'displayfeaturedimagegenesis', array($this, 'validate_taxonomy_image')); $args = array('public' => true); $output = 'names'; $taxonomies = get_taxonomies($args, $output); foreach ($taxonomies as $taxonomy) { add_action("{$taxonomy}_add_form_fields", array($this, 'add_taxonomy_meta_fields'), 5, 2); add_action("{$taxonomy}_edit_form_fields", array($this, 'edit_taxonomy_meta_fields'), 5, 2); add_action("edited_{$taxonomy}", array($this, 'save_taxonomy_custom_meta')); add_action("create_{$taxonomy}", array($this, 'save_taxonomy_custom_meta')); add_action("edit_{$taxonomy}", array($this, 'save_taxonomy_custom_meta')); add_action('load-edit-tags.php', array($this, 'help')); } add_action('split_shared_term', array($this, 'split_shared_term')); }
/** * Registers the framework's custom metadata keys and sets up the sanitize callback function. * * @since 1.3.0 * @access public * @return void */ function hybrid_register_meta() { // Register meta if the theme supports the 'hybrid-core-template-hierarchy' feature. if (current_theme_supports('hybrid-core-template-hierarchy')) { foreach (get_post_types(array('public' => true)) as $post_type) { if ('page' !== $post_type) { register_meta('post', "_wp_{$post_type}_template", 'sanitize_text_field', '__return_false'); } } } // Theme layouts meta. if (current_theme_supports('theme-layouts')) { register_meta('post', hybrid_get_layout_meta_key(), 'sanitize_key', '__return_false'); register_meta('user', hybrid_get_layout_meta_key(), 'sanitize_key', '__return_false'); } // Post styles meta. register_meta('post', hybrid_get_style_meta_key(), 'sanitize_text_field', '__return_false'); }
/** * Registers the meta for this field. * * This method should only be called on WordPress >= 4.6 since it uses the `register_meta()` function * with the new behavior introduced there. * * @since 0.6.5 * @param WPPTD\Components\TermMetabox $parent_metabox the parent metabox component of this field * @param WPPTD\Components\Taxonomy $parent_taxonomy the parent taxonomy component of this field */ public function register($parent_metabox = null, $parent_taxonomy = null) { // Do not register meta at this point, unless it is specifically enabled for the REST API. if (!$this->args['show_in_rest']) { return; } if (null === $parent_metabox) { $parent_metabox = $this->get_parent(); } if (null === $parent_taxonomy) { $parent_taxonomy = $parent_metabox->get_parent(); } $show_in_rest = $this->args['show_in_rest']; if ($show_in_rest && !is_array($show_in_rest)) { $show_in_rest = array('name' => $this->args['title']); } $args = array('object_subtype' => $parent_taxonomy->slug, 'type' => $this->get_meta_type(), 'description' => !empty($this->args['rest_description']) ? $this->args['rest_description'] : $this->args['description'], 'single' => $this->is_meta_single(), 'auth_callback' => $this->args['rest_auth_callback'], 'show_in_rest' => $show_in_rest, 'default' => $this->args['default']); register_meta('term', $this->slug, $args); }
/** * Registers custom metadata for the plugin. * * @since 1.0.0 * @access public * @return void */ function thds_register_meta() { // URLs. register_meta('post', 'download_url', 'esc_url_raw', '__return_false'); register_meta('post', 'demo_url', 'esc_url_raw', '__return_false'); register_meta('post', 'repo_url', 'esc_url_raw', '__return_false'); register_meta('post', 'purchase_url', 'esc_url_raw', '__return_false'); register_meta('post', 'support_url', 'esc_url_raw', '__return_false'); register_meta('post', 'docs_url', 'esc_url_raw', '__return_false'); register_meta('post', 'translate_url', 'esc_url_raw', '__return_false'); // Child themes. register_meta('post', 'parent_theme_id', 'absint', '__return_false'); // back-compat - use post_parent register_meta('post', 'sample_child_theme', 'absint', '__return_false'); // Other data. register_meta('post', 'wporg_slug', 'sanitize_title_with_dashes', '__return_false'); //register_meta( 'post', 'github_slug', 'strip_tags', '__return_false' ); register_meta('post', 'version', 'wp_filter_no_html_kses', '__return_false'); register_meta('post', 'download_count', 'absint', '__return_false'); //register_meta( 'post', 'edd_download_id', 'absint', '__return_false' ); }
/** * Registers the framework's custom metadata keys and sets up the sanitize callback function. * * @since 1.3.0 * @return void */ function hybrid_register_meta() { /* Register meta if the theme supports the 'hybrid-core-seo' feature. */ if (current_theme_supports('hybrid-core-seo')) { /* Register 'Title', 'Description', and 'Keywords' meta for posts. */ register_meta('post', 'Title', 'hybrid_sanitize_meta'); register_meta('post', 'Description', 'hybrid_sanitize_meta'); register_meta('post', 'Keywords', 'hybrid_sanitize_meta'); /* Register 'Title', 'Description', and 'Keywords' meta for users. */ register_meta('user', 'Title', 'hybrid_sanitize_meta'); register_meta('user', 'Description', 'hybrid_sanitize_meta'); register_meta('user', 'Keywords', 'hybrid_sanitize_meta'); } /* Register meta if the theme supports the 'hybrid-core-template-hierarchy' feature. */ if (current_theme_supports('hybrid-core-template-hierarchy')) { $post_types = get_post_types(array('public' => true)); foreach ($post_types as $post_type) { if ('page' !== $post_type) { register_meta('post', "_wp_{$post_type}_template", 'hybrid_sanitize_meta'); } } } }
/** * Register the post meta key and its sanizitzer * * Used by WordPress JSON API to expose programmatic editor beyond the post meta box display used in the HTML-based admin interface * * @since 1.0.0 * @uses register_meta * * @return void */ public static function registerPostMeta() { register_meta('post', static::META_KEY, array(__CLASS__, 'sanitizeFields')); }
/** * Registers the post stylesheets meta key ('Stylesheet') for posts and provides a function to sanitize * the metadata on update. * * @since 0.3.0 * @access public * @return void */ function post_stylesheets_register_meta() { register_meta('post', post_stylesheets_get_meta_key(), 'post_stylesheets_sanitize_meta'); }
/** * Register our actions and filters * * @static * @return void */ public static function init() { $options = WPSEO_Options::get_all(); foreach (array('opengraph' => 'opengraph', 'twitter' => 'twitter', 'googleplus' => 'google-plus') as $option => $network) { if (true === $options[$option]) { foreach (array('title' => 'text', 'description' => 'textarea', 'image' => 'upload') as $box => $type) { self::$meta_fields['social'][$network . '-' . $box] = array('type' => $type, 'title' => '', 'default_value' => '', 'description' => ''); } } } /** * Allow add-on plugins to register their meta fields for management by this class * add_filter() calls must be made before plugins_loaded prio 14 */ $extra_fields = apply_filters('add_extra_wpseo_meta_fields', array()); if (is_array($extra_fields)) { self::$meta_fields = self::array_merge_recursive_distinct($extra_fields, self::$meta_fields); } $register = function_exists('register_meta'); foreach (self::$meta_fields as $subset => $field_group) { foreach ($field_group as $key => $field_def) { if ($field_def['type'] !== 'snippetpreview') { /* register_meta() is undocumented and not used by WP internally, wrapped in function_exists as a precaution in case they remove it. */ if ($register === true) { register_meta('post', self::$meta_prefix . $key, array(__CLASS__, 'sanitize_post_meta')); } else { add_filter('sanitize_post_meta_' . self::$meta_prefix . $key, array(__CLASS__, 'sanitize_post_meta'), 10, 2); } // Set the $fields_index property for efficiency self::$fields_index[self::$meta_prefix . $key] = array('subset' => $subset, 'key' => $key); // Set the $defaults property for efficiency if (isset($field_def['default_value'])) { self::$defaults[self::$meta_prefix . $key] = $field_def['default_value']; } else { // meta will always be a string, so let's make the meta meta default also a string self::$defaults[self::$meta_prefix . $key] = ''; } } } } add_filter('update_post_metadata', array(__CLASS__, 'remove_meta_if_default'), 10, 5); add_filter('add_post_metadata', array(__CLASS__, 'dont_save_meta_if_default'), 10, 4); }
function test_post_meta_caps() { // simple tests for some common meta capabilities // Make our author $author = new WP_User( $this->factory->user->create( array( 'role' => 'author' ) ) ); // make a post $post = $this->factory->post->create( array( 'post_author' => $author->ID, 'post_type' => 'post' ) ); // the author of the post $this->assertTrue($author->exists(), "Problem getting user $author->ID"); // add some other users $admin = new WP_User( $this->factory->user->create( array( 'role' => 'administrator' ) ) ); $author_2 = new WP_User( $this->factory->user->create( array( 'role' => 'author' ) ) ); $editor = new WP_User( $this->factory->user->create( array( 'role' => 'editor' ) ) ); $contributor = new WP_User( $this->factory->user->create( array( 'role' => 'contributor' ) ) ); // administrators, editors and the post owner can edit it $this->assertTrue($admin->has_cap('edit_post', $post)); $this->assertTrue($author->has_cap('edit_post', $post)); $this->assertTrue($editor->has_cap('edit_post', $post)); // other authors and contributors can't $this->assertFalse($author_2->has_cap('edit_post', $post)); $this->assertFalse($contributor->has_cap('edit_post', $post)); // administrators, editors and the post owner can delete it $this->assertTrue($admin->has_cap('delete_post', $post)); $this->assertTrue($author->has_cap('delete_post', $post)); $this->assertTrue($editor->has_cap('delete_post', $post)); // other authors and contributors can't $this->assertFalse($author_2->has_cap('delete_post', $post)); $this->assertFalse($contributor->has_cap('delete_post', $post)); // administrators, editors, and authors can publish it $this->assertTrue($admin->has_cap('publish_post', $post)); $this->assertTrue($author->has_cap('publish_post', $post)); $this->assertTrue($editor->has_cap('publish_post', $post)); $this->assertTrue($author_2->has_cap('publish_post', $post)); // contributors can't $this->assertFalse($contributor->has_cap('publish_post', $post)); register_post_type( 'something', array( 'capabilities' => array( 'edit_posts' => 'draw_somethings' ) ) ); $something = get_post_type_object( 'something' ); $this->assertEquals( 'draw_somethings', $something->cap->edit_posts ); $this->assertEquals( 'draw_somethings', $something->cap->create_posts ); register_post_type( 'something', array( 'capabilities' => array( 'edit_posts' => 'draw_somethings', 'create_posts' => 'create_somethings' ) ) ); $something = get_post_type_object( 'something' ); $this->assertEquals( 'draw_somethings', $something->cap->edit_posts ); $this->assertEquals( 'create_somethings', $something->cap->create_posts ); _unregister_post_type( 'something' ); // Test meta authorization callbacks if ( function_exists( 'register_meta') ) { $this->assertTrue( $admin->has_cap('edit_post_meta', $post) ); $this->assertTrue( $admin->has_cap('add_post_meta', $post) ); $this->assertTrue( $admin->has_cap('delete_post_meta', $post) ); $this->assertFalse( $admin->has_cap('edit_post_meta', $post, '_protected') ); $this->assertFalse( $admin->has_cap('add_post_meta', $post, '_protected') ); $this->assertFalse( $admin->has_cap('delete_post_meta', $post, '_protected') ); register_meta( 'post', '_protected', array( $this, '_meta_filter' ), array( $this, '_meta_yes_you_can' ) ); $this->assertTrue( $admin->has_cap('edit_post_meta', $post, '_protected') ); $this->assertTrue( $admin->has_cap('add_post_meta', $post, '_protected') ); $this->assertTrue( $admin->has_cap('delete_post_meta', $post, '_protected') ); $this->assertTrue( $admin->has_cap('edit_post_meta', $post, 'not_protected') ); $this->assertTrue( $admin->has_cap('add_post_meta', $post, 'not_protected') ); $this->assertTrue( $admin->has_cap('delete_post_meta', $post, 'not_protected') ); register_meta( 'post', 'not_protected', array( $this, '_meta_filter' ), array( $this, '_meta_no_you_cant' ) ); $this->assertFalse( $admin->has_cap('edit_post_meta', $post, 'not_protected') ); $this->assertFalse( $admin->has_cap('add_post_meta', $post, 'not_protected') ); $this->assertFalse( $admin->has_cap('delete_post_meta', $post, 'not_protected') ); } }
/** * Registers the team member meta with their sanitization functions */ function register_team_member_meta() { register_meta('post', get_team_member_title_meta_key(), 'sanitize_text_field', '__return_true'); register_meta('post', get_team_member_twitter_meta_key(), 'sanitize_text_field', '__return_true'); }
/** * Registers the theme layouts meta key ('Layout') for specific object types and provides a function to * sanitize the metadata on update. * * @since 0.4.0 * @return void */ function theme_layouts_register_meta() { register_meta('post', theme_layouts_get_meta_key(), 'theme_layouts_sanitize_meta'); register_meta('user', theme_layouts_get_meta_key(), 'theme_layouts_sanitize_meta'); }
/** * Register term meta for a featured image * @return [type] [description] */ function register_term_meta() { register_meta('term', 'impa_term_image', 'impress_agents_sanitize_term_image'); }
/** * Register Custom Taxonomies * * @access public * @since 1.0 * @since 2.0 Added capabilities for new roles, moved tags to mbdb_tags * @since 2.4 Added filter and item_list labels * @since 3.0 moved to separate function, added editor, illustrator, cover artist taxonomies * */ function mbdb_register_taxonomies() { register_taxonomy('mbdb_genre', 'mbdb_book', apply_filters('mdbd_genre_taxonomy', array('rewrite' => array('slug' => 'mbdb_genres'), 'public' => true, 'show_admin_column' => true, 'update_count_callback' => '_update_post_term_count', 'capabilities' => array('manage_terms' => 'manage_categories', 'edit_terms' => 'manage_categories', 'delete_terms' => 'manage_categories', 'assign_terms' => 'manage_mbdb_books'), 'labels' => array('name' => __('Genres', 'mooberry-book-manager'), 'singular_name' => __('Genre', 'mooberry-book-manager'), 'search_items' => __('Search Genres', 'mooberry-book-manager'), 'all_items' => __('All Genres', 'mooberry-book-manager'), 'parent_item' => __('Parent Genre', 'mooberry-book-manager'), 'parent_item_colon' => __('Parent Genre:', 'mooberry-book-manager'), 'edit_item' => __('Edit Genre', 'mooberry-book-manager'), 'update_item' => __('Update Genre', 'mooberry-book-manager'), 'add_new_item' => __('Add New Genre', 'mooberry-book-manager'), 'new_item_name' => __('New Genre Name', 'mooberry-book-manager'), 'menu_name' => __('Genres', 'mooberry-book-manager'), 'popular_items' => __('Popular Genres', 'mooberry-book-manager'), 'separate_items_with_commas' => __('Separate genres with commas', 'mooberry-book-manager'), 'add_or_remove_items' => __('Add or remove genres', 'mooberry-book-manager'), 'choose_from_most_used' => __('Choose from the most used genres', 'mooberry-book-manager'), 'not_found' => __('No genres found', 'mooberry-book-manager'), 'items_list_navigation' => __('Genre navigation', 'mooberry-book-manager'), 'items_list' => __('Genre list', 'mooberry-book-manager'))))); register_taxonomy('mbdb_tag', 'mbdb_book', apply_filters('mdbd_tag_taxonomy', array('rewrite' => array('slug' => 'mbdb_tags'), 'public' => true, 'show_admin_column' => true, 'update_count_callback' => '_update_post_term_count', 'capabilities' => array('manage_terms' => 'manage_categories', 'edit_terms' => 'manage_categories', 'delete_terms' => 'manage_categories', 'assign_terms' => 'manage_mbdb_books'), 'labels' => array('name' => __('Tags', 'mooberry-book-manager'), 'singular_name' => __('Tag', 'mooberry-book-manager'), 'search_items' => __('Search Tags', 'mooberry-book-manager'), 'all_items' => __('All Tags', 'mooberry-book-manager'), 'parent_item' => __('Parent Tag', 'mooberry-book-manager'), 'parent_item_colon' => __('Parent Tag:', 'mooberry-book-manager'), 'edit_item' => __('Edit Tag', 'mooberry-book-manager'), 'update_item' => __('Update Tag', 'mooberry-book-manager'), 'add_new_item' => __('Add New Tag', 'mooberry-book-manager'), 'new_item_name' => __('New Tag Name', 'mooberry-book-manager'), 'menu_name' => __('Tags', 'mooberry-book-manager'), 'popular_items' => __('Popular Tags', 'mooberry-book-manager'), 'separate_items_with_commas' => __('Separate tags with commas', 'mooberry-book-manager'), 'add_or_remove_items' => __('Add or remove tags', 'mooberry-book-manager'), 'choose_from_most_used' => __('Choose from the most used tags', 'mooberry-book-manager'), 'not_found' => __('No tags found', 'mooberry-book-manager'), 'items_list_navigation' => __('Tag navigation', 'mooberry-book-manager'), 'items_list' => __('Tag list', 'mooberry-book-manager'))))); register_taxonomy('mbdb_series', 'mbdb_book', apply_filters('mbdb_series_taxonomy', array('rewrite' => array('slug' => 'mbdb_series'), 'public' => true, 'show_admin_column' => true, 'update_count_callback' => '_update_post_term_count', 'capabilities' => array('manage_terms' => 'manage_categories', 'edit_terms' => 'manage_categories', 'delete_terms' => 'manage_categories', 'assign_terms' => 'manage_mbdb_books'), 'labels' => array('name' => __('Series', 'mooberry-book-manager'), 'singular_name' => __('Series', 'mooberry-book-manager'), 'search_items' => __('Search Series', 'mooberry-book-manager'), 'all_items' => __('All Series', 'mooberry-book-manager'), 'parent_item' => __('Parent Series', 'mooberry-book-manager'), 'parent_item_colon' => __('Parent Series:', 'mooberry-book-manager'), 'edit_item' => __('Edit Series', 'mooberry-book-manager'), 'update_item' => __('Update Series', 'mooberry-book-manager'), 'add_new_item' => __('Add New Series', 'mooberry-book-manager'), 'new_item_name' => __('New Series Name', 'mooberry-book-manager'), 'menu_name' => __('Series', 'mooberry-book-manager'), 'popular_items' => __('Popular Series', 'mooberry-book-manager'), 'separate_items_with_commas' => __('Separate series with commas', 'mooberry-book-manager'), 'add_or_remove_items' => __('Add or remove series', 'mooberry-book-manager'), 'choose_from_most_used' => __('Choose from the most used series', 'mooberry-book-manager'), 'not_found' => __('No Series found', 'mooberry-book-manager'), 'items_list_navigation' => __('Series navigation', 'mooberry-book-manager'), 'items_list' => __('Series list', 'mooberry-book-manager'))))); register_taxonomy('mbdb_editor', 'mbdb_book', apply_filters('mbdb_editor_taxonomy', array('rewrite' => array('slug' => 'mbdb_editors'), 'public' => true, 'show_admin_column' => true, 'update_count_callback' => '_update_post_term_count', 'capabilities' => array('manage_terms' => 'manage_categories', 'edit_terms' => 'manage_categories', 'delete_terms' => 'manage_categories', 'assign_terms' => 'manage_mbdb_books'), 'labels' => array('name' => __('Editors', 'mooberry-book-manager'), 'singular_name' => __('Editor', 'mooberry-book-manager'), 'search_items' => __('Search Editors', 'mooberry-book-manager'), 'all_items' => __('All Editors', 'mooberry-book-manager'), 'parent_item' => __('Parent Editor', 'mooberry-book-manager'), 'parent_item_colon' => __('Parent Editor:', 'mooberry-book-manager'), 'edit_item' => __('Edit Editor', 'mooberry-book-manager'), 'update_item' => __('Update Editor', 'mooberry-book-manager'), 'add_new_item' => __('Add New Editor', 'mooberry-book-manager'), 'new_item_name' => __('New Editor Name', 'mooberry-book-manager'), 'menu_name' => __('Editors', 'mooberry-book-manager'), 'popular_items' => __('Popular Editors', 'mooberry-book-manager'), 'separate_items_with_commas' => __('Separate Editors with commas', 'mooberry-book-manager'), 'add_or_remove_items' => __('Add or remove Editors', 'mooberry-book-manager'), 'choose_from_most_used' => __('Choose from the most used Editors', 'mooberry-book-manager'), 'not_found' => __('No Editors found', 'mooberry-book-manager'), 'items_list_navigation' => __('Edtior navigation', 'mooberry-book-manager'), 'items_list' => __('Editor list', 'mooberry-book-manager'))))); register_taxonomy('mbdb_illustrator', 'mbdb_book', apply_filters('mbdb_illustrator_taxonomy', array('rewrite' => array('slug' => 'mbdb_illustrators'), 'public' => true, 'show_admin_column' => true, 'update_count_callback' => '_update_post_term_count', 'capabilities' => array('manage_terms' => 'manage_categories', 'edit_terms' => 'manage_categories', 'delete_terms' => 'manage_categories', 'assign_terms' => 'manage_mbdb_books'), 'labels' => array('name' => __('Illustrators', 'mooberry-book-manager'), 'singular_name' => __('Illustrator', 'mooberry-book-manager'), 'search_items' => __('Search Illustrators', 'mooberry-book-manager'), 'all_items' => __('All Illustrators', 'mooberry-book-manager'), 'parent_item' => __('Parent Illustrator', 'mooberry-book-manager'), 'parent_item_colon' => __('Parent Illustrator:', 'mooberry-book-manager'), 'edit_item' => __('Edit Illustrator', 'mooberry-book-manager'), 'update_item' => __('Update Illustrator', 'mooberry-book-manager'), 'add_new_item' => __('Add New Illustrator', 'mooberry-book-manager'), 'new_item_name' => __('New Illustrator Name', 'mooberry-book-manager'), 'menu_name' => __('Illustrators', 'mooberry-book-manager'), 'popular_items' => __('Popular Illustrators', 'mooberry-book-manager'), 'separate_items_with_commas' => __('Separate Illustrators with commas', 'mooberry-book-manager'), 'add_or_remove_items' => __('Add or remove Illustrators', 'mooberry-book-manager'), 'choose_from_most_used' => __('Choose from the most used Illustrators', 'mooberry-book-manager'), 'not_found' => __('No Illustrators found', 'mooberry-book-manager'), 'items_list_navigation' => __('Illustrator navigation', 'mooberry-book-manager'), 'items_list' => __('Illustrator list', 'mooberry-book-manager'))))); register_taxonomy('mbdb_cover_artist', 'mbdb_book', apply_filters('mbdb_cover_artist_taxonomy', array('rewrite' => array('slug' => 'mbdb_cover_artists'), 'public' => true, 'show_admin_column' => true, 'update_count_callback' => '_update_post_term_count', 'capabilities' => array('manage_terms' => 'manage_categories', 'edit_terms' => 'manage_categories', 'delete_terms' => 'manage_categories', 'assign_terms' => 'manage_mbdb_books'), 'labels' => array('name' => __('Cover Artists', 'mooberry-book-manager'), 'singular_name' => __('Cover Artist', 'mooberry-book-manager'), 'search_items' => __('Search Cover Artists', 'mooberry-book-manager'), 'all_items' => __('All Cover Artists', 'mooberry-book-manager'), 'parent_item' => __('Parent Cover Artist', 'mooberry-book-manager'), 'parent_item_colon' => __('Parent Cover Artist:', 'mooberry-book-manager'), 'edit_item' => __('Edit Cover Artist', 'mooberry-book-manager'), 'update_item' => __('Update Cover Artist', 'mooberry-book-manager'), 'add_new_item' => __('Add New Cover Artist', 'mooberry-book-manager'), 'new_item_name' => __('New Cover Artist Name', 'mooberry-book-manager'), 'menu_name' => __('Cover Artists', 'mooberry-book-manager'), 'popular_items' => __('Popular Cover Artists', 'mooberry-book-manager'), 'separate_items_with_commas' => __('Separate Cover Artists with commas', 'mooberry-book-manager'), 'add_or_remove_items' => __('Add or remove Cover Artists', 'mooberry-book-manager'), 'choose_from_most_used' => __('Choose from the most used Cover Artists', 'mooberry-book-manager'), 'not_found' => __('No Cover Artists found', 'mooberry-book-manager'), 'items_list_navigation' => __('Cover Artist navigation', 'mooberry-book-manager'), 'items_list' => __('Cover Artist list', 'mooberry-book-manager'))))); // ************ term meta *********************************/ if (function_exists('get_term_meta')) { $taxonomies = get_object_taxonomies('mbdb_book', 'objects'); foreach ($taxonomies as $name => $taxonomy) { $pretty_name = str_replace('mbdb_', '', $name); register_meta('term', $name . '_book_grid_descripion', 'mbdb_sanitize_book_grid_description'); register_meta('term', $name . '_book_grid_description_bottom', 'mbdb_sanitize_book_grid_description'); add_action($name . '_add_form_fields', 'mbdb_new_' . $pretty_name . '_grid_description_field'); add_action('edit_' . $name, 'mbdb_save_' . $pretty_name . '_book_grid_description'); add_action('create_' . $name, 'mbdb_save_' . $pretty_name . '_book_grid_description'); add_action($name . '_edit_form_fields', 'mbdb_edit_' . $pretty_name . '_grid_description_field'); } } }
/** * Add a field. * * @access public * * @param string $object_type Object type. * @param WP_Fields_API_Field|string $id Fields API Field object, or ID. * @param string $object_name Object name (for post types and taxonomies). * @param array $args Field arguments; passed to WP_Fields_API_Field * constructor. */ public function add_field($object_type, $id, $object_name = null, $args = array()) { if (empty($id) && empty($args)) { return; } $control = array(); if (is_a($id, 'WP_Fields_API_Field')) { $field = $id; $id = $field->id; } else { // Save for late init $field = $args; if (isset($field['control'])) { $control = $field['control']; // Remove from field args unset($field['control']); } } if (empty($object_name) && !empty($object_type)) { $object_name = '_' . $object_type; // Default to _object_type for internal handling } if (!isset(self::$fields[$object_type])) { self::$fields[$object_type] = array(); } if (!isset(self::$fields[$object_type][$object_name])) { self::$fields[$object_type][$object_name] = array(); } self::$fields[$object_type][$object_name][$id] = $field; // Control handling if (!empty($control)) { // Generate Control ID if not set if (empty($control['id'])) { $control['id'] = sanitize_key($id); } // Get Control ID $control_id = $control['id']; // Remove ID from control args unset($control['id']); // Add field $control['fields'] = $id; // Add control for field $this->add_control($object_type, $control_id, $object_name, $control); } // Meta types call register_meta() for their fields if (in_array($object_type, array('post', 'term', 'user', 'comment')) && (!empty($field['internal']) || !empty($field->internal))) { // Set callbacks $sanitize_callback = array($this, 'register_meta_sanitize_callback'); $auth_callback = null; if (!empty($field['meta_auth_callback'])) { $auth_callback = $field['meta_auth_callback']; } elseif (!empty($field->meta_auth_callback)) { $auth_callback = $field->meta_auth_callback; } register_meta($object_type, $id, $sanitize_callback, $auth_callback); } }
/** * Registers the custom field series meta key 'Series' for for specific object types and provides a * function to sanitize the metadata on update. * * @since 0.4.0 * @access private * @return void */ function custom_field_series_register_meta() { register_meta('post', custom_field_series_meta_key(), 'custom_field_series_sanitize_meta'); }