wp_set_object_terms 不适用于自定义分类法和 cpt

Pus*_*ook 4 php wordpress

我构建了一个表单,使用户能够从前端发布。我试图让它通过 wp_set_object_terms 分类法,因为我使用自定义帖子类型和自定义分类法。这是我的代码:

if(isset ($_POST['submit_offer'])=='submit'){
     $user_id = get_current_user_id();
    $args=array(
        'post_author'   => $user_id,
        'post_title'    => $_POST['job_title'],
        'post_content'  => $_POST['post_content'],
        'post_excerpt'  => $_POST['job_field'],
        'meta_input'    => array(
                            'points_amount' => $_POST['post_points'],              
                                ),
        'post_status'   => 'publish',
        'post_type'     => 'job_offers',

    );

    // get post id
    $post_id = wp_insert_post($args);
  $job_tax = array ( 44 , 45 );
  wp_set_object_terms( $post_id , $job_tax, 'field_of_work' );
}
Run Code Online (Sandbox Code Playgroud)

而且它不起作用!!!!

ald*_*som 6

另外,对于那些具有自定义帖子类型和自定义分类法且其代码位于functions.php 中的人,请务必为插入帖子的函数赋予低优先级(20)。这样就可以了!这是functions.php中wp_insert_post()
的一种方法

function insert_db_posts() {
        $thepost = wp_insert_post(array(
                'post_type'         =>  'art',
                'post_title'        =>  'Try hard',
                ));
        wp_set_object_terms( $thepost, 37, 'artist');
}
add_action( 'init', 'insert_db_posts', 20 ); // this will fire very late!!!
Run Code Online (Sandbox Code Playgroud)