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):因此,要么添加正确的大写字母,要么使用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 ); } 文章导航