【问题标题】:How can I limit WordPress category selection to just one?如何将 WordPress 类别选择限制为一个?
【发布时间】:2012-07-12 02:44:36
【问题描述】:

我有一个自定义帖子类型和一个自定义分类设置 - 非常标准的东西。

但是,我想知道如何限制我的客户在每个帖子中选择多个分类?

我不介意他们能够创建和删除分类类型,但我不希望他们选择多个。因为这些是复选框,所以它们可以。也许单选按钮可以工作?

我已经看到使用 jQuery 来更改这些字段的解决方案,但它们似乎有点 hacky。执行此操作的最佳做​​法是什么?

附件是我自定义分类框的截图。

【问题讨论】:

  • 您找到解决方案了吗? Here's另一种方法

标签: php wordpress wordpress-theming


【解决方案1】:

我意识到这不是一个完整的答案,但只需使用下拉列表列出类别(或分类术语)就可以了。我个人不知道,但必须有插件可以做到这一点。没有冒犯,但这确实让我觉得这是一个以前解决过的问题。

【讨论】:

  • 嗯,这就是我的想法,但我只找到 3 年前的 hackey 答案......甚至它们也不理想。试图通过原生 WP 选项找到一个可能是标准的想法。
【解决方案2】:

据我所知,我们必须使用 jQuery。它是“hacky”,但很容易工作,如果我的记忆很好的话,纯 PHP/WP 解决方案真的很复杂。
这是必要的代码:

jQuery("#categorychecklist input").each(function(){
    this.type = 'radio';
});

我们必须在页面/wp-admin/post.php/wp-admin/post-new.php 上运行代码。它应该在加载时运行,然后在创建新类别时再次运行。为了解决新类别问题,我使用了MutationObserver

foreach( array( 'post', 'post-new' ) as $hook )
    add_action( "admin_footer-$hook.php", 'convert_cats_to_radio' );

function convert_cats_to_radio(){
    global $post;
    if( $post->post_type !== 'post') // select your desired Post Type
        return;

    ?>
    <script type="text/javascript">
    function makeRadioButtons(){
        jQuery("#categorychecklist input").each(function(){
            this.type = 'radio';
        });
    }
    function newCategoryObserver(){
        // Example from developer.mozilla.org/en-US/docs/Web/API/MutationObserver
        var targetNode = document.getElementById('categorychecklist');
        var config = { attributes: true, childList: true, subtree: true };
        var callback = function(mutationsList) {
            for(var mutation of mutationsList) {
                if (mutation.type == 'childList') {
                    makeRadioButtons();
                }
            }
        };
        var observer = new MutationObserver(callback);
        observer.observe(targetNode, config);
    }
    newCategoryObserver();
    makeRadioButtons();
    </script>
    <?php
}

相关this old plugin 仍然可以完美解决子类别层次结构的问题。默认情况下,WP中,选择一个子类别时,它不会在其父类别下显示,但在列表之上。它也是一个 jQuery 解决方案,由当时的主要 WP 核心开发人员编写。

【讨论】:

    猜你喜欢
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    • 2019-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-27
    相关资源
    最近更新 更多