设置不适用于插件激活的对象术语

时间:2015-08-27 作者:Rutwick Gangurde

我正在尝试创建几个自定义帖子,并在插件激活时为其设置自定义分类术语。我正在使用注册插件激活挂钩来完成它。职位设置正确,但我没有设置职位期限。我正在使用wp_set_object_terms 去做吧。可能的原因是什么?

我的代码类似于:

register_activation_hook( __FILE__, \'insert_latest_books\' );

public function insert_latest_books() {
    //Get the latest books
    $data = new Data_Fetcher();
    $latest_books = $data->get_latest_books();

    foreach($latest_books as $latest_book) {
        //Create a book post for each latest book
        $book = [
            \'post_type\' => \'book\',
            \'post_status\' => \'publish\',
            \'post_title\' => $latest_book->name,
            \'post_content\' => $latest_book->description
        ];

        $book_id = wp_insert_post($book);

        //TODO: Not working on plugin activation
        wp_set_object_terms($book_id, array(\'latest\'), \'label\');
        set_book_thumbnail($book_id, $latest_book->name, $latest_book->preview_image_url);
        update_post_meta($book_id, \'book_code\', $latest_book->embed_code);
        update_post_meta($book_id, \'book_pages\', $latest_book->length);
    }
}

2 个回复
最合适的回答,由SO网友:Rutwick Gangurde 整理而成

我从@Pieter Goosen和@Ignat的评论中了解到。B、 和@Pieter Goosen的回答here, 我需要在插件激活时注册分类法,并插入术语。然后我需要将分类法注册代码挂接到init 法典建议的行动挂钩。这将确保在插入插件激活术语时,我已经注册了分类法,并且init 我按照WordPress的指示使用init来达到这个目的。

伪代码:

function register_tax() {
    //Register the taxonomy
}


function activate() {
    register_tax();
    wp_insert_term(...);
}

register_activation_hook(\'...\', \'activate\');
add_action(\'init\', \'register_tax\');
希望这能帮助陷入类似情况的人。如果你需要解释,皮特的回答真的很有帮助。

SO网友:Ignat B.

register_activation_hook 是一次性激活挂钩。它可以用于创建数据库结构,例如,只需要在插件激活触发器上触发。

为了设置自定义分类法,您需要一个钩子,它不仅会触发一次,而且会在每次WordPress加载时触发。例如init.

使用add_action( \'init\', \'YOUR_CALLBACK\' ); 为了实现这一点