require one tag for each post

时间:2011-10-22 作者:Ryan

我该如何要求每个帖子的标签不超过一个?

我想要求用户创建一个标签或为每个帖子选择一个以前的标签。如果你能给我提供任何信息,那将非常有帮助。

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

Have fun.

这适用于任何支持“post\\u tag”分类法的帖子类型(包括customs)。99.9%的情况下,它只适用于“post”post类型但我们制造兼容的东西;)

/*
Plugin Name: Single Postag
Description: Enforces use of single \'post_tag\' taxonomy on select posts.
Author: EarnestoDev
Version: 1.0.0
Author URI: http://www.earnestodev.com/
*/

// Prepare to save new post_tag
function postag_wp_insert_post($post_ID, $post){
    // Don\'t update if field value was not posted
    if(!isset($_POST[\'single_postag\'])) return;
    // Fix WP slashing madness (I hate this joke)
    $postag = stripslashes(trim($_POST[\'single_postag\']));
    $postag = $postag ? array(trim($postag)) : array();
    // Set object terms, don\'t append
    wp_set_object_terms($post_ID, $postag, \'post_tag\', false);
}
add_action(\'wp_insert_post\', \'postag_wp_insert_post\', 10, 2); // 2 args required

// The metaxbox is here
function postag_meta_box($post, $box){
    // Get the tags and only keep names to weld
    $tags = wp_get_post_tags($post->ID);
    // Loop through as references for quick value reassignment
    foreach($tags as &$tag) $tag = $tag->name;
    // If multiple tags are added outside this widget, they are combined on save.
    echo \'<p><input type="text" class="widefat" name="single_postag" value="\',
        esc_attr(implode(\', \', $tags)), \'" /></p>\';
    // Pimp description so your users can understand this
    echo \'<p class="description">\', \'Enter a single Tag.\', \'</p>\';
}

// And now hijack the metaxbox
function postag_add_meta_boxes($post_type, $post){
    // Discard default \'post_tag\' metabox (Important)
    remove_meta_box(\'tagsdiv-post_tag\', $post_type, \'side\');
    // Only add the new metabox if post_type supports \'post_tag\' taxonomy
    if(!is_object_in_taxonomy($post_type, \'post_tag\')) return;
    // Create a new \'tagsdiv-postag\' metabox (you can\'t reuse the old MB name)
    add_meta_box(\'tagsdiv-postag\', __(\'Tag\'), \'postag_meta_box\',
        $post_type, \'side\', \'core\');
}
add_action(\'add_meta_boxes\', \'postag_add_meta_boxes\', 10, 2); // 2 args required
Tested code. PHP 5.3+使用的闭包。如果需要,可以将代码转换为与PHP 5.2兼容的变体

当做

SO网友:Travis Pflanz

我知道这篇文章很旧,但这里有一个很好的插件,它有很多不同的发布要求选项,包括标签和类别的最小/最大数量、内容和标题的最小/最大长度、需要特色图片、文章中链接的最大数量等等-WyPiekacz

我在我所有的多作者网站上都使用这个插件。

SO网友:EarnestoDev

重写标记元框,并仅设置将作为该单个标记的文本字段。更新时,删除旧标记并添加新标记。如果你仍然需要帮助,我可以生成一些代码。。。

结束

相关推荐

In need of array of post tags

在循环中的单个post页面上,我需要一个字符串形式的\\u tags()数组。get\\u tags()为我提供了所有的标签,而不仅仅是这篇文章。有没有一种简单的方法可以做到这一点?