在创建帖子之前向帖子添加标签

时间:2014-02-14 作者:Xun Yang

在创建帖子之前,是否可以向帖子添加标签?

假设我有一个链接“/wp admin/new post.php?tags=a,b,c,d”,然后单击它,我想进入新的贴子页面,其中的标签已经与之关联。

2 个回复
SO网友:offroff

我试着用过滤器wp_get_object_terms 像这样:

function add_object_terms($terms, $object_ids, $taxonomies, $args){
    if (isset( $_GET[ \'tags\' ]) && str_replace("\'","",$taxonomies) == "post_tag") {
        $newterms = explode(",",$_GET[\'tags\']);
        return array_merge($terms, $newterms);
    } else {
        return $terms;
    }
}
add_filter(\'wp_get_object_terms\', \'add_object_terms\',1,4);
但这不起作用,可能返回值的格式错误,我没有查找它,而是尝试了其他类似的过滤器:

function add_tags($tags_to_edit, $taxonomy){
    if (isset( $_GET[ \'tags\' ]) && $taxonomy == \'post_tag\') {
        return $_GET[\'tags\'];
    } else {
        return $tags_to_edit;
    }
}
add_filter(\'terms_to_edit\', \'add_tags\',1,2);
这是可行的,但只有同时使用第一个过滤器,这是因为如果没有要处理的条款,第二个过滤器将不会运行。

SO网友:Milo

您可以使用load-post-new.phpwp_insert_post 行动。

下面是我们的URL格式:

/wp管理员/新发布。php?add\\u tags=foo,bar

首先,我们将函数挂接到load-post-new.php 并检查是否add_tags 在请求中。如果是,我们将向wp_insert_post:

function wpa_load_post_new(){
    if ( array_key_exists( \'add_tags\', $_REQUEST ) ) {
        add_action( \'wp_insert_post\', \'wpa_insert_post\' );
    }
}
add_filter( \'load-post-new.php\', \'wpa_load_post_new\' );
然后在我们wp_insert_post 操作,我们会在新帖子添加到数据库后立即将传递的任何标签与之关联:

function wpa_insert_post( $post_id ){
    wp_set_post_tags( $post_id, $_REQUEST[\'add_tags\'] );
}

结束

相关推荐

POSTS_NAV_LINK();不显示在静态页面上

我有两个不同的循环。主页上的默认值,但存档页面上的二次循环。它抓住了所有的内容,就像这样:<?php // WP_Query arguments $args = array ( \'posts_per_page\' => \'3\' ); // The Query $archiveQuery = new WP_Query( $args ); // The Loop if ( $archiveQuery-&