WordPress : Comment puis-je ajouter l’action customize_register APRÈS l’ajout d’une taxonomie personnalisée
customize_register ne fonctionne qu’avec le crochet customize_register, et quel que soit le crochet que j’utilise pour ajouter la taxonomie personnalisée, cela se produit toujours après customize_register.
(Je souhaite parcourir la liste des termes de ma taxonomie personnalisée pour créer des catégories et des options personnalisées pour chaque terme)
ÉDITER:
Voici le code édulcoré en question de mon fichier de fonctions de modèle :
register_taxonomy( 'brand', $object_types, $args );
add_action( 'muplugins_loaded', 'brand', 0 );
// ????? What Hook can I use here^ that will run before the 'customize_register' hook ????? //
function iartz_customize_register( $wp_customize ) {
$brands = get_terms('brand');
foreach($brands AS $brand){
//Add color options for each term of taxtonomy 'brand'
}
}
add_action( 'customize_register', 'iartz_customize_register' );
Solution n°1 trouvée
Réponse courte : Les deux fonctions peuvent être accrochées à customize_register, et elles fonctionneront bien. Le crochet customize_register ne fonctionne que sur la page de personnalisation, mais j’ai besoin de la fonction register_taxonomy sur les deux pages. Ainsi, pour utiliser la fonction register_taxonomy sur un appel de page frontale, je l’ai également appelée sur le crochet init.
« Donc, ce problème peut avoir différentes raisons »
iolocin, tu as raison…
Sans aller trop loin, je m’attendais à ce que le crochet customize_register appelle à chaque appel de page (parce que c’est ce que dit la documentation), mais ce n’est pas le cas, et cela a jeté mon dépannage dans la mauvaise direction.
Merci pour l’aide!
Solution n°2 trouvée
AFAIK, il ne devrait pas y avoir de problème pour obtenir des données de taxonomie à l’ customizer_register
état du crochet. Ce problème peut donc avoir différentes raisons, mais elles ne ressortent pas de votre question. De plus, je ne suis pas sûr de ce que vous essayez d’accomplir, vous voudrez peut-être combler les lacunes en matière d’informations en fonction des questions de @Rarst. En dehors de cela, il existe plusieurs méthodes pour – par exemple – ajouter une liste déroulante de taxonomie au personnalisateur – j’en ai choisi une et j’en ai lié une autre, voir ci-dessous.
Avis de non-responsabilité :
ce n’est pas mon code, je l’ajoute ici pour des raisons d’exhaustivité, des liens vers la source sont ajoutés. Je ne l’ai pas essayé moi-même, mais pour autant que je sache, il n’y a rien de mal à cela et cela fonctionne pour les gens.
Code pour la liste déroulante de taxonomie pour le personnalisateur de thème
? Source chez Gist
? selon l’article de blog d’Eric Juden
Cela entre dans lefunctions.php
add_action('customize_register', 'my_customize_register');
function my_customize_register($wp_customize){
require_once(TEMPLATEPATH . '/class/wp_customizer_taxonomy_dropdown.php');
$wp_customize->add_section('my_theme_blog_featured_categories', array(
'title' => __('Blog: Featured Categories'),
'priority' => 36,
));
$wp_customize->add_setting('featured_category_1', array(
'default' => get_option('default_category', ''),
));
$wp_customize->add_control( new Taxonomy_Dropdown_Customize_Control($wp_customize, 'featured_category_1', array(
'label' => __('Featured Area 1'),
'section' => 'my_theme_blog_featured_categories',
'settings' => 'featured_category_1',
'args' => array(), // arguments for wp_dropdown_categories function...optional. array('taxonomy' => 'my_taxonomy')
)));
return $wp_customize;
}
Cela va dans un fichier appelé wp_customizer_taxonomy_dropdown.php
situé dans un dossier, situé relativement au functions.php, appelé class
:
class Taxonomy_Dropdown_Customize_Control extends WP_Customize_Control {
public $type = 'taxonomy_dropdown';
var $defaults = array();
public $args = array();
public function render_content(){
// Call wp_dropdown_cats to ad data-customize-setting-link to select tag
add_action('wp_dropdown_cats', array($this, 'wp_dropdown_cats'));
// Set some defaults for our control
$this->defaults = array(
'show_option_none' => __('None'),
'orderby' => 'name',
'hide_empty' => 0,
'id' => $this->id,
'selected' => $this->value(),
);
// Parse defaults against what the user submitted
$r = wp_parse_args($this->args, $this->defaults);
?>
<label><span class="customize-control-title"><?php echo esc_html($this->label); ?></span></label>
<?php
// Generate our select box
wp_dropdown_categories($r);
}
function wp_dropdown_cats($output){
// Search for <select and replace it with <select data-customize=setting-link="my_control_id"
$output = str_replace('<select', '<select ' . $this->get_link(), $output);
return $output;
}
}
Cela devrait, avec les informations supplémentaires liées, être assez explicite.
Approche similaire supplémentaire
? Contrôles personnalisés du personnalisateur de thème WordPress par @bueltge ;
? Lien vers la source de l’exemple de liste déroulante de taxonomie sur Gist ;
? Sa réponse ici concernant ce sujet ;
? Il existe également quelques tutoriels, articles et autres, vous les trouverez facilement vous-même si vous en avez besoin.
Solution n°3 trouvée
Réponse courte : Les deux fonctions peuvent être accrochées à customize_register, et elles fonctionneront bien. Le crochet customize_register ne fonctionne que sur la page de personnalisation, mais j’ai besoin de la fonction register_taxonomy sur les deux pages. Ainsi, pour utiliser la fonction register_taxonomy sur un appel de page frontale, je l’ai également appelée sur le crochet init.
« Donc, ce problème peut avoir différentes raisons »
iolocin, tu as raison…
Sans aller trop loin, je m’attendais à ce que le crochet customize_register appelle à chaque appel de page (parce que c’est ce que dit la documentation), mais ce n’est pas le cas, et cela a jeté mon dépannage dans la mauvaise direction.
Merci pour l’aide!
Solution n°4 trouvée
AFAIK, il ne devrait pas y avoir de problème pour obtenir des données de taxonomie à l’ customizer_register
état du crochet. Ce problème peut donc avoir différentes raisons, mais elles ne ressortent pas de votre question. De plus, je ne suis pas sûr de ce que vous essayez d’accomplir, vous voudrez peut-être combler les lacunes en matière d’informations en fonction des questions de @Rarst. En dehors de cela, il existe plusieurs méthodes pour – par exemple – ajouter une liste déroulante de taxonomie au personnalisateur – j’en ai choisi une et j’en ai lié une autre, voir ci-dessous.
Avis de non-responsabilité :
ce n’est pas mon code, je l’ajoute ici pour des raisons d’exhaustivité, des liens vers la source sont ajoutés. Je ne l’ai pas essayé moi-même, mais pour autant que je sache, il n’y a rien de mal à cela et cela fonctionne pour les gens.
Code pour la liste déroulante de taxonomie pour le personnalisateur de thème
? Source chez Gist
? selon l’article de blog d’Eric Juden
Cela entre dans lefunctions.php
add_action('customize_register', 'my_customize_register');
function my_customize_register($wp_customize){
require_once(TEMPLATEPATH . '/class/wp_customizer_taxonomy_dropdown.php');
$wp_customize->add_section('my_theme_blog_featured_categories', array(
'title' => __('Blog: Featured Categories'),
'priority' => 36,
));
$wp_customize->add_setting('featured_category_1', array(
'default' => get_option('default_category', ''),
));
$wp_customize->add_control( new Taxonomy_Dropdown_Customize_Control($wp_customize, 'featured_category_1', array(
'label' => __('Featured Area 1'),
'section' => 'my_theme_blog_featured_categories',
'settings' => 'featured_category_1',
'args' => array(), // arguments for wp_dropdown_categories function...optional. array('taxonomy' => 'my_taxonomy')
)));
return $wp_customize;
}
Cela va dans un fichier appelé wp_customizer_taxonomy_dropdown.php
situé dans un dossier, situé relativement au functions.php, appelé class
:
class Taxonomy_Dropdown_Customize_Control extends WP_Customize_Control {
public $type = 'taxonomy_dropdown';
var $defaults = array();
public $args = array();
public function render_content(){
// Call wp_dropdown_cats to ad data-customize-setting-link to select tag
add_action('wp_dropdown_cats', array($this, 'wp_dropdown_cats'));
// Set some defaults for our control
$this->defaults = array(
'show_option_none' => __('None'),
'orderby' => 'name',
'hide_empty' => 0,
'id' => $this->id,
'selected' => $this->value(),
);
// Parse defaults against what the user submitted
$r = wp_parse_args($this->args, $this->defaults);
?>
<label><span class="customize-control-title"><?php echo esc_html($this->label); ?></span></label>
<?php
// Generate our select box
wp_dropdown_categories($r);
}
function wp_dropdown_cats($output){
// Search for <select and replace it with <select data-customize=setting-link="my_control_id"
$output = str_replace('<select', '<select ' . $this->get_link(), $output);
return $output;
}
}
Cela devrait, avec les informations supplémentaires liées, être assez explicite.
Approche similaire supplémentaire
? Contrôles personnalisés du personnalisateur de thème WordPress par @bueltge ;
? Lien vers la source de l’exemple de liste déroulante de taxonomie sur Gist ;
? Sa réponse ici concernant ce sujet ;
? Il existe également quelques tutoriels, articles et autres, vous les trouverez facilement vous-même si vous en avez besoin.
0 commentaire