自定义分类可以显示在自定义元框内吗?

时间:2011-06-29 作者:m-torin

我目前正在下拉菜单中显示自定义分类法。每个分类法在侧栏中都有自己的小包装器。为了便于使用,是否可以将分类法移动到我的自定义书写框的内部?

enter image description here

2 个回复
最合适的回答,由SO网友:kaiser 整理而成

以下内容摘自“将作者移动到发布框”任务,但它应该为您提供一个起点。接下来,您应该看看“/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\' );

SO网友:Tomas Buteler

我通过在为我的自定义帖子类型创建的metabox上使用自定义分类法实现了这一点,方法如下:

首先,我将此添加到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。如果您使用的是非层次分类法(即“Tags”),那么它将始终是“tagsdiv”,后跟您的自定义分类法slug。如果是层次分类法(即“类别”),id将是slug,后跟“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>
最后,请注意,对于“关键字”或任何其他类似标记的分类法,这是不够的。标签元盒功能是通过JS实现的,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>

结束

相关推荐