是否限制下拉菜单中的类别选择?

时间:2012-10-24 作者:speedypancake

Hmmm... maybe trickier than I hoped? If this is simply impossible then please do let me know :-) 问题细化:如何调整此代码的include部分以使用类别名称而不是id?谢谢

$dropdown = wp_dropdown_categories( array(
\'include\' => \'58, 3\',
    \'name\' => \'category_id[]\',
    \'hide_empty\' => false,
    \'echo\' => false,
) );
我最近开始使用此代码强制多站点用户在创建新帖子之前从下拉菜单中选择一个类别。

有谁能帮我把分类选项限制在几个特定的类别,例如新闻/产品?即使只是不显示子类别也会有帮助。谢谢

更新:我发现添加这一行可以将选择限制在两个类别:

 \'include\' => \'58, 3\',
但是,我如何使用cat名称/文本而不是id号来实现这一点,因为它适用于多站点&;创建新网站时,我无法控制cat id????

代码:

add_filter( \'load-post-new.php\', \'wpse14403_load_post_new\' );
function wpse14403_load_post_new()
{
$post_type = \'post\';
if ( isset( $_REQUEST[\'post_type\'] ) ) {
    $post_type = $_REQUEST[\'post_type\'];
}

// Only do this for posts
if ( \'post\' != $post_type ) {
    return;
}

if ( array_key_exists( \'category_id\', $_REQUEST ) ) {
    add_action( \'wp_insert_post\', \'wpse14403_wp_insert_post\' );
    return;
}

// Show intermediate screen
extract( $GLOBALS );
$post_type_object = get_post_type_object( $post_type );
$title = $post_type_object->labels->add_new_item;

include( ABSPATH . \'wp-admin/admin-header.php\' );

$dropdown = wp_dropdown_categories( array(
    \'name\' => \'category_id[]\',
    \'hide_empty\' => false,
    \'echo\' => false,
) );

$category_label = __( \'Category:\' );
$continue_label = __( \'Continue\' );
echo <<<HTML
<div class="wrap">
<h2>{$title}</h2>

<form method="get">
    <table class="form-table">
        <tbody>
            <tr valign="top">
                <th scope="row">{$category_label}</th>
                <td>{$dropdown}</td>
            </tr>
            <tr>
                <td></td>
                <th><input name="continue" type="submit" class="button-primary" value="{$continue_label}" /></th>
        </tbody>
    </table>
    <input type="hidden" name="post_type" value="{$post_type}" />
</form>
</div>
HTML;
include( ABSPATH . \'wp-admin/admin-footer.php\' );
exit();
}

// This function will only be called when creating an empty post,
// via `get_default_post_to_edit()`, called in post-new.php
function wpse14403_wp_insert_post( $post_id )
{
wp_set_post_categories( $post_id, $_REQUEST[\'category_id\'] );
}

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

好吧,在进一步思考这个问题之后,我意识到这是一个有点愚蠢的问题。。。My problem is actually being able to pre-define categories in themes for new subsites of my mulitiste.

我通过使用一个高级插件解决了这个问题,该插件允许我提供带有一些预定义类别和一些虚拟内容的博客模板/主题。这意味着我已经知道创建新子网站时的类别id。

现在,新用户可以选择我的任何主题,他们中的大多数都会有一个电子商店选项,其中会预装下拉菜单“产品”类别等。

天哪,我将尝试简化整个wp cms的长度:-)

如果有人感兴趣,我会很快在这里发布完整项目的链接(我希望如此)。

结束