在CPT的所有职位上强制使用术语/分类

时间:2014-08-27 作者:vajrasar

我有一个CPT-“Events”,其中有400多篇帖子[没有选择自定义分类法(tax\\u类别)中的术语],因为我最近导入了这些帖子。

现在,我已经创建了一个URL结构,需要为每个帖子分配一些tax\\u类别的术语。那么,有没有什么方法可以将tax\\u类别中的一个术语(比如“新演出”)分配给所有活动cpt的帖子?

在搜索过程中,我还发现了以下代码,但我很困惑,我该如何修改它以满足我的需要,或者它甚至是我正在寻找的解决方案-

function mfields_set_default_object_terms( $post_id, $post ) {
    if ( \'publish\' === $post->post_status ) {
        $defaults = array(
            \'post_tag\' => array( \'taco\', \'banana\' ),
            \'monkey-faces\' => array( \'see-no-evil\' ),
            );
        $taxonomies = get_object_taxonomies( $post->post_type );
        foreach ( (array) $taxonomies as $taxonomy ) {
            $terms = wp_get_post_terms( $post_id, $taxonomy );
            if ( empty( $terms ) && array_key_exists( $taxonomy, $defaults ) ) {
                wp_set_object_terms( $post_id, $defaults[$taxonomy], $taxonomy );
            }
        }
    }
}
add_action( \'save_post\', \'mfields_set_default_object_terms\', 100, 2 ); 
代码源-http://wordpress.mfields.org/2010/set-default-terms-for-your-custom-taxonomies-in-wordpress-3-0/

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

尝试以下操作:

function custom_set_term_to_post(){
    $args = array(
        \'post_type\' => \'post\',
        );
    $all_posts = get_posts();
    foreach ($all_posts as $key => $post) {
        $tag_name = \'post_tag\'; // required tag name
        $term_list = wp_get_post_terms($post->ID, $tag_name, array("fields" => "ids"));
        if (!empty($term_list)) {
            // there is already tags; need not do anything
            continue;
        }
        $tag = array( 23 ); // required tag ID to assign
        wp_set_post_terms( $post->ID, $tag, $tag_name );
    }
}
此函数用于扫描所有帖子类型的帖子post 并检查是否有标签。如果未分配任何标记,则分配所需的标记。此处标记名称为post_tag. 所需的标记项为id23. 用您的价值替换它。确保此函数只运行一次。只是为了当前的目的。不要把它留在主题中。:-)

结束

相关推荐