問題描述
我正在下拉菜單中顯示自定義分類。每個分類法在側邊欄中都有自己的小包裝。是否可以將分類法移到我的自定義寫入框內,用於 ease-of-use 目的?
最佳解決方法
以下是從 「移動作者發佈框」 的任務,但它應該給你一個起點。接下來你應該看看 「/wp-admin/edit-form-advanced.php」,在那裏你會發現一些關於 get_object_taxonomies()的東西,看看你的東西如何被命名,所以你可以刪除和添加東西。
function wpse_remove_author_box()
{
if ( ! is_admin() )
return;
remove_meta_box( 'authordiv', 'post', 'normal' );
}
add_action( 'admin_menu', 'wpse_remove_author_box' );
function wpse_author_to_publish_box()
{
if ( ! is_admin() )
return;
global $post_ID;
$post = get_post( $post_ID );
?>
<div id="author" class="misc-pub-section" style="border-top-style:solid; border-top-width:1px; border-top-color:#EEEEEE; border-bottom-width:0px;">
Author:
<?php post_author_meta_box( $post ); ?>
</div>
<?php
}
add_action( 'post_submitbox_misc_actions', 'wpse_author_to_publish_box' );
次佳解決方法
我通過以下方式為自定義職位類型創建了一個代表變量的自定義分類法:
首先我把它添加到我的 functions.php:
add_action( 'admin_menu', 'remove_default_metaboxes' );
function remove_default_metaboxes() {
// Remove 'Keywords' (like tags) metabox
remove_meta_box( 'tagsdiv-keyword', 'my-custom-post-type-slug', 'side' );
// Remove 'Groups' (like categories) metabox
remove_meta_box( 'groupdiv', 'my-custom-post-type-slug', 'side' );
}
函數 remove_meta_box()的第一個參數實際上是由 WordPress 生成的 id 。如果您使用的是 non-hierarchical 分類法 (即”Tags”),則它始終是”tagsdiv-“,其後是您的自定義分類標記。如果它是一個分層分類 (即”Category”),那麼 ID 將是隨後的”div”,沒有空格。
然後我將以下代碼放在我的 metabox 模板上:
<div class="groups">
<?php
$box = array(
'args' => array(
'taxonomy' => 'group'
),
'title' => 'Groups'
);
post_categories_meta_box($post, $box)
?>
</div>
<div class="keywords inside">
<?php
global $post_ID;
$post = get_post( $post_ID );
$box = array(
'args' => array(
'taxonomy' => 'keyword'
)
);
post_tags_meta_box($post, $box);
?>
</div>
最後,請注意,在”Keywords” 或任何其他 Tag-like 分類法的情況下,這還不夠。標籤 metabox 功能通過 JS 實現,這取決於不是由上述功能創建的選擇器。在我的情況下,這是通過將”inside” 類添加到關鍵字 div 並通過將這些行添加到單獨的 JS 文件來解決的:
$('.keywords').each(function(){
tagBox.init();
return false;
});
只要確保在 WP 加載默認 Post 腳本後調用 JS 。如果由於某些原因您不想添加更多腳本,您可以通過模擬 WP 的結構來實現相同的方式:
<div id="side-sortables">
<div id="tagsdiv-keyword" class="postbox inside">
// post_tags_meta_box() etc
</div>
</div>
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。
