Lister les publications dans le personnalisateur de thème wordpress

Publié par Jean-Michel le

Salut. Je crée un thème WordPress et je me demandais si quelqu’un connaissait un moyen de répertorier l’un de mes types de publication personnalisés dans le personnalisateur de thème. J’ai un type de message personnalisé appelé « diaporama » qui a des méta-boîtes personnalisées, etc. et est conçu uniquement pour les diaporamas. J’aimerais pouvoir lister ces messages dans une liste déroulante à l’intérieur du personnalisateur . Idéalement, se retrouver avec eux dans le tableau comme celui-ci… ‘the_id’ => ‘Slideshow post title’,

            $wp_customize->add_setting(
              'slideshow-homepage',
              array(
                'default' => 'none',
               )
              );

            $wp_customize->add_control(
              'slideshow-homepage',
              array(
                'type' => 'select',
                'priority' => 3,
                'label' => 'Slideshow',
                'description' => '',
                'section' => 'homepage',
                'choices' => array(

                'somehow' => 'somehow',
                'list' => 'list',
                'all' => 'all',
                'custom' => 'custom',
                'post' => 'post',
                'types' => 'types',
                'of' => 'of',
                'type' => 'type',
                'slideshow' => 'slideshow'

                ),
              )
            );

Un grand merci les gars et les filles. Lewis

Solution n°1 trouvée

utiliser array_reduce

$wp_customize->add_control(
              'slideshow-homepage',
              array(
                'type' => 'select',
                'priority' => 3,
                'label' => 'Slideshow',
                'description' => '',
                'section' => 'homepage',
                'choices' => array_reduce(
                    get_posts( 'post_type=slideshow&posts_per_page=-1' ),
                    function( $result, $item ) {
                        $result[$item->ID] = $item->post_title;
                        return $result;
                    }
                ),
              )
            );

Pour ajouter également un champ vide :

$posts = array_reduce(
        get_posts( 'post_type=slideshow&posts_per_page=-1' ),
        function( $result, $item ) {
            $result[$item->ID] = $item->post_title;
            return $result;
        }
    );
    $none = array('' => 'None');
    $choices = $none + $posts;

    $wp_customize->add_control('slideshow_control', array(
        'label'      => __('Choose Slideshow', 'themename'),
        'section'    => 'slideshow_option',
        'settings'   => 'slideshow_settings',
        'type' => 'select',
        'choices' => $choices
    ));
Catégories : Wordpress

0 commentaire

Laisser un commentaire

Avatar placeholder

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