J'enregistre 7 taxonomies personnalisées dans mon functions.php. Étant donné que chaque fonction utilise les mêmes étiquettes et arguments et est attachée au même type de publication personnalisée, je me demande s’il est possible d’enregistrer toutes les taxonomies dans une fonction? Voici le code qui est répété 7 fois avec le <XXX>
comme seule pièce changeante:
function custom_taxonomy_<XXX> () {
$labels = array(
'name' => '<XXX>',
'singular_name' => '<XXX>',
'menu_name' => '<XXX>s',
'all_items' => 'All <XXX>s',
'parent_item' => 'Parent <XXX>',
'parent_item_colon' => 'Parent <XXX>:',
'new_item_name' => 'New <XXX> Name',
'add_new_item' => 'Add New <XXX>',
'edit_item' => 'Edit <XXX>',
'update_item' => 'Update <XXX>',
'separate_items_with_commas' => 'Separate <XXX> with commas',
'search_items' => 'Search <XXX>s',
'add_or_remove_items' => 'Add or Remove <XXX>s',
'choose_from_most_used' => 'Choose from the most used <XXX>s',
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'show_in_nav_menus' => true,
'show_tagcloud' => true,
'query_var' => true,
);
register_taxonomy( '<XXX>', 'custom_post_type', $args );
}
add_action( 'init', 'custom_taxonomy_<XXX>', 0 );
Nan. Pas la façon dont WordPress au moins.
Vous pourriez probablement créer une fonction d'assistance (tout simplement PHP royaume) pour créer des instances de tableaux d'étiquettes, ce qui empêcherait sérieusement de rendre les chaînes traduisibles.
Je voudrais essayer de créer une fonction de wrapping qui peut fournir des valeurs pour tous ces XXX's
au moment de l'exécution. Voici un exemple approximatif et non testé:
function build_and_register_custom_taxonomy($taxonomy_name, $taxonomy_menu_name, $priority) {
$definition = function($taxonomy_name) {
$labels = array(
'name' => $taxonomy_name,
'singular_name' => $taxonomy_name,
'menu_name' => "${taxonomy_menu_name}"
// etc...
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'show_in_nav_menus' => true,
'show_tagcloud' => true,
'query_var' => true,
);
register_taxonomy($taxonomy_name, 'custom_post_type', $args );
}
add_action('init', $definition, $priority);
}
build_and_register_custom_taxonomy('news_item', 'News Items', 0)
Vous devez terminer la mise en œuvre ici, mais l’idée est de réduire au minimum le nombre de paramètres nécessaires tout en remplissant le tableau $labels
complet avec les valeurs appropriées.
Vous pouvez vous retrouver avec la fonction build_and_register_custom_taxonomy
en acceptant 8 arguments, ou peut-être simplement les trois ou quatre.
Vous pouvez également remplacer des parties du tableau $args
en transmettant les arguments de la fonction parent build_and_register_custom_taxonomy
si nécessaire.
Bonne chance!