Tax_Input不起作用wp_INSERT_POST

时间:2015-11-29 作者:Shawn James

我正在使用wp\\U insert\\U post,除tax\\U input外,所有字段都正常工作。我的代码有问题吗?

$customtax =  array(
\'product_link\' => $link,
\'product_price\' => $price,
\'product_description\' => $desc );
$my_post = array(
  \'post_title\'    => $title,
  \'post_content\'  => $content,
  \'post_type\'     => \'products\',
  \'tax_input\' => $customtax
);
提前谢谢你

6 个回复
SO网友:Rarst

最常见的原因是在没有用户上下文(cron等)的情况下运行此代码。在内部wp_insert_post() 上下文WP将检查用户是否具有分类的权限。没有用户就等于没有权限就等于没有分配任何条款。

解决方法是先创建post,然后为其分配术语。通过API方法显式分配术语时(例如wp_set_object_terms()) 未执行权限检查。

SO网友:Eduardo Marcolino

结果是tax_input 如果用户没有使用自定义分类法的能力,则不起作用:

wp包括/后。php(wp\\U insert\\U post):enter image description here

因此,要么添加正确的大写字母,要么使用wp_set_object_terms()

SO网友:Tuhin A.

正如您在评论中所说,插件将进行筛选,并且没有挂钩,我认为插件无论如何都必须有wp\\u insert\\u post挂钩。否则,如何插入帖子?我回答这个问题已经很久了,因为我面对同样的问题,找到了唯一的方法。

$new\\u id=wp\\u insert\\u post($post\\u arr,true)$状态=wp\\u set\\u object\\u terms($new\\u id,$term\\u id,\'location\')

这里的位置是术语slug。总有一天会有人得到这个有用的。。

SO网友:user1180105

在使用tax\\u输入进行后期插入时,请确保使用术语分类id,因为段塞或名称似乎会被丢弃

$my_post = array(
\'post_title\'    => $title,
\'post_content\'  => $content,
\'post_type\'     => \'products\',
\'tax_input\' => array(\'myTax\', array(4,458,11478)),
);

SO网友:Gagan

这个问题由来已久,但我还是花了相当长的时间来弄清楚,在cron操作中使用insert post(wp\\u insert\\u post)时,它会显示这种行为。

插入帖子,然后插入wp\\u set\\u object\\u terms是一个很好的解决方法,但是,在插入帖子之前设置当前用户也对我有用

$user_id = 1;
$user = get_user_by( \'id\', $user_id );
wp_set_current_user( $user_id, $user->user_login);

$new_id = wp_insert_post($my_post);

SO网友:giannisrig

正如@Rarst所说,WordPress在wp_insert_post() 如果当前用户有权添加分类术语。您还可以从post.php Line:3352

    if ( current_user_can( $taxonomy_obj->cap->assign_terms ) ) {
        wp_set_post_terms( $post_ID, $tags, $taxonomy );
    }
如果在没有登录用户的情况下运行wp\\U insert\\U post代码,则可以使用wp_set_current_user() 方法

    $user = get_user_by(\'ID\', $user_id);

    if( $user ){

         wp_set_current_user( $user_id, $user->user_login );

    }

相关推荐