私は「タイプ」と呼ばれる追加の分類法が関連付けられたカスタムスポンサータイプ(スポンサーと呼ばれる)を作成しました。
基本的にはすべて完璧に機能していますが、私の分類法「Type」を通常の「type and search or create new」ではなくドロップダウンメニューにしたいと思います。その理由は、分類法で6つの異なる「タイプ」を作成したので、新しい「スポンサー」を作成する予定の人々は、新しいスポンサーポストごとに6つのうち1つを選択すればよいためです。
Googleが見つけたチュートリアルやガイドをいくつか試しましたが、まだ機能していないものはありません。
カスタム投稿タイプとカスタム分類はプラグイン「カスタム投稿タイプUI」によって作成されます。
私がこれまでに試したことはこれです:
add_action('restrict_manage_posts','my_restrict_manage_posts');
function my_restrict_manage_posts() {
global $typenow;
if ($typenow=='sponsors'){
$args = array(
'show_option_all' => "Show All Categories",
'taxonomy' => 'type',
'name' => 'type'
);
wp_dropdown_categories($args);
}
}
add_action( 'request', 'my_request' );
function my_request($request) {
if (is_admin() && $GLOBALS['PHP_SELF'] == '/wp-admin/edit.php' && isset($request['post_type']) && $request['post_type']=='sponsors') {
$request['term'] = get_term($request['type'],'type')->name;
}
return $request;
}
この
add_action( 'restrict_manage_posts', 'my_restrict_manage_posts' );
function my_restrict_manage_posts() {
// only display these taxonomy filters on desired custom post_type listings
global $typenow;
if ($typenow == 'sponsors' || $typenow == 'type') {
// create an array of taxonomy slugs you want to filter by - if you want to retrieve all taxonomies, could use get_taxonomies() to build the list
$filters = array('title_sponsor', 'platin-sponsor', 'guld-sponsor', 'diamant-sponsor');
foreach ($filters as $tax_slug) {
// retrieve the taxonomy object
$tax_obj = get_taxonomy($tax_slug);
$tax_name = $tax_obj->labels->name;
// retrieve array of term objects per taxonomy
$terms = get_terms($tax_slug);
// output html for taxonomy dropdown filter
echo "<select name='$tax_slug' id='$tax_slug' class='postform'>";
echo "<option value=''>Show All $tax_name</option>";
foreach ($terms as $term) {
// output each select option line, check against the last $_GET to show the current option selected
echo '<option value='. $term->slug, $_GET[$tax_slug] == $term->slug ? ' selected="selected"' : '','>' . $term->name .' (' . $term->count .')</option>';
}
echo "</select>";
}
}
}
しかし、私が言ったように、うまくいったものはありません。
任意の助けや提案は非常に高く評価されます。
ありがとう
誠実
- メスティカ
これはあなたがカスタム投稿タイプ "スポンサー"とカスタム分類 "タイプ"を持っていると仮定します...
function custom_meta_box() {
remove_meta_box( 'tagsdiv-types', 'sponsors', 'side' );
add_meta_box( 'tagsdiv-types', 'Types', 'types_meta_box', 'sponsors', 'side' );
}
add_action('add_meta_boxes', 'custom_meta_box');
/* Prints the taxonomy box content */
function types_meta_box($post) {
$tax_name = 'types';
$taxonomy = get_taxonomy($tax_name);
?>
<div class="tagsdiv" id="<?php echo $tax_name; ?>">
<div class="jaxtag">
<?php
// Use nonce for verification
wp_nonce_field( plugin_basename( __FILE__ ), 'types_noncename' );
$type_IDs = wp_get_object_terms( $post->ID, 'types', array('fields' => 'ids') );
wp_dropdown_categories('taxonomy=types&hide_empty=0&orderby=name&name=types&show_option_none=Select type&selected='.$type_IDs[0]); ?>
<p class="howto">Select your type</p>
</div>
</div>
<?php
}
/* When the post is saved, saves our custom taxonomy */
function types_save_postdata( $post_id ) {
// verify if this is an auto save routine.
// If it is our form has not been submitted, so we dont want to do anything
if ( ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) || wp_is_post_revision( $post_id ) )
return;
// verify this came from the our screen and with proper authorization,
// because save_post can be triggered at other times
if ( !wp_verify_nonce( $_POST['types_noncename'], plugin_basename( __FILE__ ) ) )
return;
// Check permissions
if ( 'sponsors' == $_POST['post_type'] )
{
if ( !current_user_can( 'edit_page', $post_id ) )
return;
}
else
{
if ( !current_user_can( 'edit_post', $post_id ) )
return;
}
// OK, we're authenticated: we need to find and save the data
$type_ID = $_POST['types'];
$type = ( $type_ID > 0 ) ? get_term( $type_ID, 'types' )->slug : NULL;
wp_set_object_terms( $post_id , $type, 'types' );
}
/* Do something with the data entered */
add_action( 'save_post', 'types_save_postdata' );