問題描述

我一直在嘗試各種各樣的方法。基本上,我一直在試圖讓這個外掛在外掛的啟用期間只填寫一次分類法的一個外掛。術語填充是透過 wp_insert_terms 函式在函式中完成的。在 register_activation_hook 中直接呼叫函式似乎不起作用,也不使用 register_activation_hook 掛起 init 鉤子。任何人都有什麼想法?

這是我的程式碼版本

//version 1
class vsetup {
     function __construct() {
          register_activation_hook(__FILE__,array($this,'activate'));
          $this->create_taxonomies();
     }
     function activate() {
          wp_insert_term('Action','genre');
          wp_insert_term('Adventure','genre');
     }
     function create_taxonomies() {
           $genre_args = array(
            'hierarchical' => true,
                'labels' => array(
            'name'=> _x('Genres', 'taxonomy general name' ),
            'singular_name' => _x('Genre', 'taxonomy singular name'),
            'search_items' => __('Search Genres'),
            'popular_items' => __('Popular Genres'),
            'all_items' => __('All Genres'),
            'edit_item' => __('Edit Genre'),
            'edit_item' => __('Edit Genre'),
            'update_item' => __('Update Genre'),
            'add_new_item' => __('Add New Genre'),
            'new_item_name' => __('New Genre Name'),
            'separate_items_with_commas' => __('Seperate Genres with Commas'),
            'add_or_remove_items' => __('Add or Remove Genres'),
            'choose_from_most_used' => __('Choose from Most Used Genres')
            ),
                'query_var' => true,
            'rewrite' => array('slug' =>'genre')
           );
           register_taxonomy('genre', 'post',$genre_args);
     }
}

當這不行時,我試著這樣做:

 //version 2
    class vsetup {
         function __construct() {
              register_activation_hook(__FILE__,array($this,'activate'));
              $this->create_taxonomies();
         }
         function activate() {
              add_action('init', array($this,'populate_taxonomies'));
         }
          function create_taxonomies() {
               $genre_args = array(
                'hierarchical' => true,
                    'labels' => array(
                'name'=> _x('Genres', 'taxonomy general name' ),
                'singular_name' => _x('Genre', 'taxonomy singular name'),
                'search_items' => __('Search Genres'),
                'popular_items' => __('Popular Genres'),
                'all_items' => __('All Genres'),
                'edit_item' => __('Edit Genre'),
                'edit_item' => __('Edit Genre'),
                'update_item' => __('Update Genre'),
                'add_new_item' => __('Add New Genre'),
                'new_item_name' => __('New Genre Name'),
                'separate_items_with_commas' => __('Seperate Genres with Commas'),
                'add_or_remove_items' => __('Add or Remove Genres'),
                'choose_from_most_used' => __('Choose from Most Used Genres')
                ),
                    'query_var' => true,
                'rewrite' => array('slug' =>'genre')
               );
               register_taxonomy('genre', 'post',$genre_args);
         }
         function populate_taxonomies() {
              wp_insert_term('Action','genre');
              wp_insert_term('Adventure','genre');
         }
    }

到目前為止,這兩種想法對我來說都是有效的。

最佳解決方案

這是您的程式碼的固定版本。

class vsetup {
     function __construct() {
          register_activation_hook(__FILE__,array($this,'activate'));
          add_action( 'init', array( $this, 'create_taxonomies' ) );
     }
     function activate() {
          $this->create_taxonomies();
          wp_insert_term('Action','genre');
          wp_insert_term('Adventure','genre');
     }
     function create_taxonomies() {
           $genre_args = array(
            'hierarchical' => true,
                'labels' => array(
            'name'=> _x('Genres', 'taxonomy general name' ),
            'singular_name' => _x('Genre', 'taxonomy singular name'),
            'search_items' => __('Search Genres'),
            'popular_items' => __('Popular Genres'),
            'all_items' => __('All Genres'),
            'edit_item' => __('Edit Genre'),
            'edit_item' => __('Edit Genre'),
            'update_item' => __('Update Genre'),
            'add_new_item' => __('Add New Genre'),
            'new_item_name' => __('New Genre Name'),
            'separate_items_with_commas' => __('Seperate Genres with Commas'),
            'add_or_remove_items' => __('Add or Remove Genres'),
            'choose_from_most_used' => __('Choose from Most Used Genres')
            ),
                'query_var' => true,
            'rewrite' => array('slug' =>'genre')
           );
           register_taxonomy('genre', 'post',$genre_args);
     }
}

並且不要忘記建立 vsetup 類的物件/例項,即 new vsetup()

咦!忘了刪除除錯語句。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。