Soporte » WordPress Avanzado » Como obtener todos Post types en dropdown-pages del Customize

  • Resuelto tamarazambrana

    (@tamarazambrana)


    Hola,

    necesito en mi ‘Customize’ (personalizador) escoger un post pero el post tiene un post type. Y la opción de control de Customize no me enseña los post que tengo en los post types.

    https://codex.wordpress.org/Class_Reference/WP_Customize_Control

    `$wp_customize->add_control( ‘url’, array(
    ‘section’ => _( ‘einstellungen’),
    ‘label’ => _( ‘URL’),
    ‘type’ => ‘dropdown-pages’,
    ));`

    ¿Quizás algo que me dejo en en registro del post type?
    https://codex.wordpress.org/Function_Reference/register_post_type

    `’public’ => true,
    ‘publicly_queryable’ => true,
    ‘show_ui’ => true,
    ‘show_in_menu’ => true,
    ‘show_in_nav_menus’ => true,
    ‘capability_type’ => ‘post’,
    ‘hierarchical’ => false,
    ‘rewrite’ => array(‘slug’ => ‘libro’),
    ‘query_var’ => true,
    ‘exclude_from_search’ => false,
    ‘has_archive’ => true,
    ‘supports’ => array( ‘title’, ‘editor’, ‘revisions’ ),
    ‘menu_icon’ => ‘dashicons-admin-page’,
    ‘show_in_rest’ => true,`

    Alguna idea? Gracias

    • Este debate fue modificado hace 2 semanas, 1 día por  tamarazambrana.
    • Este debate fue modificado hace 2 semanas, 1 día por  Fernando Tellado. Razón: Etiquetado correcto del código
    • Este debate fue modificado hace 1 semana, 6 días por  Fernando Tellado. Razón: Cambio en el título
Viendo 4 respuestas - 1 de 4 (de 4 total)
  • Hola @tamarazambrana

    El ‘dropdown-pages’ solo muestra el post type ‘page’, con lo que si quieres usar otro post type deberas extender o crear la class WP_Customize_Control con otro nombre y modificar el metodo ‘render_content’ para modificar los argumentos.

    Busca y observa en el https://developer.wordpress.org/reference/ como funciona la clase WP_Customize_Control (sobre todo el metodo ‘render_content’), wp_dropdown_pages function, get_pages function y get_posts function.

    Añadiendo por ejemplo en los argumentos de wp_dropdown_pages el post type ya lo cambiaria.

    tamarazambrana

    (@tamarazambrana)

    Gracias @kallookoo tu respuesta me ayudo mucho. Dejo mi código por si a alguien le ayuda.

    function customizer_conf( $wp_customize ) {
    
    	class WP_Customize_Dropdown_Pages__Control extends WP_Customize_Control {
    		public $type = 'dropdown-post-type';
    
    		public function render_content() {
    			$input_id         = '_customize-input-' . $this->id;
    			$description_id   = '_customize-description-' . $this->id;
    			?>
    
    			<label for="<?php echo esc_attr( $input_id ); ?>" class="customize-control-title"><?php echo esc_html( $this->label ); ?></label>
    			<span id="<?php echo esc_attr( $description_id ); ?>" class="description customize-control-description"><?php echo $this->description; ?></span>
    
    			<?php
    			$dropdown_name     = '_customize-dropdown-pages-' . $this->id;
    			$show_option_none  = __( '&mdash; Select &mdash;' );
    			$dropdown          = wp_dropdown_pages(
    					array(
    							'name'              => $dropdown_name,
    							'echo'              => 0,
    							'show_option_none'  => $show_option_none,
    							'option_none_value' => 0,
    							'selected'          => $this->value(),
    							'post_type'	        => 'posttype',
    					)
    			);
    
    			$dropdown = str_replace( '<select', '<select ' . $this->get_link() . ' id="' . esc_attr( $input_id ) . '" ', $dropdown );
    
    			echo $dropdown;
    		}
    	}
    
    	$wp_customize->add_setting( 'page-posttype' );
    
    	$wp_customize->add_control( new WP_Customize_Dropdown_Pages__Control( $wp_customize, 'page-posttype', array(
    		'label'    => __( 'Home-posttype', 'nmf' ),
    		'section'  => 'einstellungen',
    		'priority' => 20,
    		'settings' => 'page-posttype',
    	)));
    
    }
    add_action( 'customize_register', 'customizer_conf' );
    kallookoo

    (@kallookoo)

    Hola @tamarazambrana

    En nombre de toda la comunidad te agradezemos que lo compartas y por mi parte; De nada, aqui estamos todos para ayudarnos siempre que se pueda.

    Saludos

    Olvidé poner que el valor de ‘hierarchical’ a la hora de definir el post type tiene que ser true.

    'public' => true,
    'publicly_queryable' => true,
    'show_ui' => true,
    'show_in_menu' => true,
    'show_in_nav_menus' => true,
    'capability_type' => 'post',
    'hierarchical' => true,
    'rewrite' => array('slug' => 'libro'),
    'query_var' => true,
    'exclude_from_search' => false,
    'has_archive' => true,
    'supports' => array( 'title', 'editor', 'revisions' ),
    'menu_icon' => 'dashicons-admin-page',
    'show_in_rest' => true,
    • Esta respuesta fue modificada hace 1 semana, 5 días por  LGrusin.
Viendo 4 respuestas - 1 de 4 (de 4 total)
  • Debes estar registrado para responder a este tema.