Ich habe verschiedene Möglichkeiten ausprobiert, dies zu tun. Grundsätzlich habe ich versucht, es so zu gestalten, dass ein Plugin von mir die Begriffe einer Taxonomie nur einmal während der Aktivierung des Plugins auffüllt. Der Begriff Auffüllen erfolgt in einer Funktion über die Funktion wp_insert_terms. Das Aufrufen der Funktion direkt im register_activation_hook scheint nicht zu funktionieren, und das Verknüpfen mit dem init-Hook über den register_activation_hook funktioniert auch nicht. Hat jemand irgendwelche Ideen?
Hier ist eine Version meines Codes
//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);
}
}
Als das nicht funktionierte, habe ich Folgendes versucht:
//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');
}
}
Bisher hat keine der beiden Ideen für mich funktioniert.
plugin-development
custom-taxonomy
activation
Manny Fleurmond
quelle
quelle
Antworten:
Hier ist die feste Version Ihres Codes.
Und vergessen Sie nicht, das Objekt / die Instanz der vsetup-Klasse zu erstellen, d. H.
new vsetup()
Huh! Ich habe vergessen, die Debug-Anweisung zu entfernen.
quelle
Genial! Dies löste mein Problem. Aber dann hatte ich noch einen. Viele Leute, wie ich, halten Klassen in einem Ordner, der niedriger ist als die Plugin-Datei, die sie instanziiert. So könnten Sie in Ihrer Plugin-Datei haben:
Nun, so mache ich das, und das Obige funktioniert, wenn Sie den Registeraktivierungs-Hook aus dem Konstruktor der Klasse entfernen und ihn als Teil der Methode einfügen, die die Instanz von vsetup erstellt hat, wie:
Vielleicht hilft das jemandem ...
quelle