カスタム分類法を作成しました。
add_action( 'init', 'create_collection_taxonomies', 0 );
function create_collection_taxonomies() {
$labels = array(
'name' => _x( 'Collection Tags', 'taxonomy general name' ),
'singular_name' => _x( 'Collection Tag', 'taxonomy singular name' ),
'search_items' => __( 'Search Collection Tags' ),
'popular_items' => __( 'Popular Collection Tags' ),
'all_items' => __( 'All Collection Tags' ),
'parent_item' => __( 'Parent Collection Tag' ),
'parent_item_colon' => __( 'Parent Collection Tag' ),
'edit_item' => __( 'Edit Collection Tag' ),
'update_item' => __( 'Update Collection Tag' ),
'add_new_item' => __( 'Add New Collection Tag' ),
'new_item_name' => __( 'New Collection Tag Name' ),
'menu_name' => __( 'Collections Tags' ),
);
$args = array(
'description' => 'Used to select promo/video for display in app.',
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'CollectionTag' ),
);
register_taxonomy( 'CollectionTag', array('collection', 'videos', 'promos'), $args );
}
WP adminの分類メタボックスに現れると考えてdescription
引数を追加しました。しかし、そうではないようです。
私は を2011年から見つけました 、ボックスに説明を追加するにはjQueryを使わなければならないだろうと言っていましたそれを使うために。
Codex で読んでいるものから、この引数の目的を誤解していませんか?この分類法のメタボックス内にこの説明を表示するにはどうすればよいですか。
メタボックスを作成するファイルを見ると、説明を追加できるようにするために実際にフックするものは何もないので、jQueryを使用する必要があります。スクリプトは非常に小さいので、私はそれを外部ファイルに入れないで、代わりに admin_footer
フックを使うことにしました:
/**
* Prepend taxonomy descriptions to taxonomy metaboxes
*/
function append_taxonomy_descriptions_metabox() {
$post_types = array( 'page' ); // Array of Accepted Post Types
$screen = get_current_screen(); // Get current user screen
if( 'edit' !== $screen->parent_base ) { // IF we're not on an edit page - just return
return;
}
// IF the current post type is in our array
if( in_array( $screen->post_type, $post_types ) ) {
$taxonomies = get_object_taxonomies( $screen->post_type, 'objects' ); // Grab all taxonomies for that post type
// Ensure taxonomies are not empty
if( ! empty( $taxonomies ) ) : ?>
<script type="text/javascript">
<?php foreach( $taxonomies as $taxonomy ) : ?>
var tax_slug = '<?php echo $taxonomy->name; ?>';
var tax_desc = '<?php echo $taxonomy->description; ?>';
// Add the description via jQuery
jQuery( '#' + tax_slug + 'div div.inside' ).prepend( '<p>' + tax_desc + '</p>' );
<?php endforeach; ?>
</script>
<?php endif;
}
}
add_action( 'admin_footer', 'append_taxonomy_descriptions_metabox' );
これをテストする$post_types
配列があるので、これを every post型や every pageに追加するのではなく、特定のページのみに追加します。分類法についても同じことができますが、このシナリオには含まれていません。
ボーナスマテリアル
以下は、管理者分類ページ(新しい用語を追加する場所)に説明を追加します。もっと簡単なフックadd_action( '{$taxonomy}_pre_add_form' )
を使います。
/**
* Prepend taxonomy description to Add New Term form
*/
function CollectionTag_admin_edit_description( $tax_slug ) {
// Grab the Taxonomy Object
$tax_obj = get_taxonomy( $tax_slug );
// IF the description is set on our object
if( property_exists( $tax_obj, 'description' ) ) {
echo '<h2>Description</h2>';
echo apply_filters( 'the_content', $tax_obj->description );
}
}
add_action( 'CollectionTag_pre_add_form', 'CollectionTag_admin_edit_description' );