使用cron作业为POST添加自定义分类

时间:2019-03-21 作者:Tuhin A.

我正在尝试使用cron作业添加自定义分类法。问题出在wordpress 4.7之后,它验证当前用户是否有能力分配分类法。Crob工作没有能力。

我正在使用它注册自定义taxonomoy

add_action( \'init\', \'create_locations_hierarchical_taxonomy\', 0 );

function create_locations_hierarchical_taxonomy() {

// Add new taxonomy, make it hierarchical like categories
//first do the translations part for GUI

  $labels = array(
    \'name\' => _x( \'Locations\', \'taxonomy general name\' ),
    \'singular_name\' => _x( \'Location\', \'taxonomy singular name\' ),
    \'search_items\' =>  __( \'Search Locations\' ),
    \'all_items\' => __( \'All Locations\' ),
    \'parent_item\' => __( \'Parent Location\' ),
    \'parent_item_colon\' => __( \'Parent Location:\' ),
    \'edit_item\' => __( \'Edit Location\' ), 
    \'update_item\' => __( \'Update Location\' ),
    \'add_new_item\' => __( \'Add New Location\' ),
    \'new_item_name\' => __( \'New Location Name\' ),
    \'menu_name\' => __( \'Locations\' ),
  );    

// Now register the taxonomy

  register_taxonomy(\'location\',array(\'post\'), array(
    \'hierarchical\' => true,
    \'labels\' => $labels,
    \'show_ui\' => true,
    \'show_admin_column\' => true,
    \'query_var\' => true,
    \'rewrite\' => array( \'slug\' => \'location\' ),
  ));
并使用此脚本为taxonomy数组分配$post\\u arr

        $post_location = array_map(\'intval\', $post_location);   
            if ($post_type == \'post\') {
                $post_arr[\'tax_input\'] = $post_location;
            }
当前,我的脚本可以创建自定义分类法,但无法使用post进行分配。。

参考号:https://core.trac.wordpress.org/browser/tags/5.1/src/wp-includes/post.php#L3784

2 个回复
最合适的回答,由SO网友:Tuhin A. 整理而成

So 一ft型er 3. d一ys of rese一rch类 我 g级ot型 t型h类我s only one w一y. Before 我nsert型我ng级 post型, t型h类ere 我s no w一y t型o 一ss我g级n t型一x个_我nput型 c一use t型h类一t型 w我ll ver我fy user c一p一b我l我t型y. Cron job don\'t型 h类一ve t型h类一t型. &#x个A.;

&#x个A.;$new_我d = wp_我nsert型_post型($post型_一rr, t型rue);&#x个A.;
&#x个A.;Post型 我nsert型ed, now we c一n 一dd cust型om级 t型一x个onom级y w我t型h类 t型h类e post型 l我ke t型h类我s

&#x个A.;&#x个A.;
&#x个A.;$st型一t型us = wp_set型_object型_t型erm级s($new_我d, $t型erm级_我d, \'loc一t型我on\');&#x个A.;
&#x个A.;&#x个A.;

h类ere loc一t型我on 我s t型h类e t型erm级 slug级. &#x个A.;Funny t型h类我ng级 我s, cron c一n 一dd post型/t型一x个onom级oy, but型 c一n\'t型 一ss我g级n t型一x个onom级y w我t型h类out型 c一p一b我l我t型y ch类eck!!..Som级ed一y som级eone w我ll g级et型 t型h类我s h类elpful..

&#x个A.;

SO网友:mrben522

问题是,当cron作业运行时,可能没有当前用户。因此,您需要检查是否有登录的用户,如果有,请保存他们的ID,然后将当前用户设置为具有正确功能的任何ID,完成您的工作,然后将其设置回以前的任何ID。类似这样的内容(未经测试的代码,未经测试请勿将其扔到任何重要位置)

$old_user = get_current_user_id();
wp_set_current_user(1); //use whatever ID you want here
    //do your stuff
$post_location = array_map(\'intval\', $post_location);
if ($post_type == \'post\') {
    $post_arr[\'tax_input\'] = $post_location;
}
wp_set_current_user($old_user);

相关推荐