WordPress : Comment puis-je ajouter l’action customize_register APRÈS l’ajout d’une taxonomie personnalisée

Publié par Jean-Michel le

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.phpsitué 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.phpsitué 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.

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *