Soporte » WordPress Avanzado » Paneles y sectiones del Personalizador por terms

  • AYUDAAAAAA
    ME SALE SIEMPRE LA CATEGORÍA POR DEFECTO

    <?php
    /**
    * Panel: Customizer
    *
    * Customizer panel with controls.
    *	
    * @since 1.0.2
    * @package cvsnews
    */
    
    // Exit if accessed directly.
    if ( ! defined( 'ABSPATH' ) ) {
    exit;
    }
    
    // Customize function.
    if ( ! function_exists( 'cvsnews_panel_wpcustomize' ) ) {
    
    	// Customize Register action.
    	add_action( 'customize_register', 'cvsnews_panel_wpcustomize' );
    
    	/**
    	* Customize Panel.
    	*
    	* Adds a Panel, Section with basic controls.
    	*
    	* @param object WP_Customize $wp_customize Instance of the
    	WP_Customize_Manager class.
    	* @since 1.0.2
    	*/
    	function cvsnews_panel_wpcustomize( $wp_customize ) {
    
    	/* Panel: For Home */
    	$wp_customize->add_panel( 'cvs_news_panel_customize', array(
    		'priority' => 30,
    		'title' => __( 'General Options', 'cvsnews' ),
    		'description' => __( '', 'cvsnews' ),
    		'capability' => 'edit_theme_options',
    		) 
    	);
    
    	/* Panel: Homepage */
    	$wp_customize->add_panel( 'cvsnews_panel_homepage', array(
    		'title' => __( 'Homepage', 'cvsnews' ),
    		'priority' => 200,
    		'description' => __('', 'cvsnews' ),
    		'capability' => 'edit_theme_options',
    		'active_callback' => 'is_home'
    		) 
    	);
    
    	$taxonomies = get_taxonomies();
    		foreach ( $taxonomies as $tax_type_key => $taxonomy ) {
    		$top_level_terms = get_terms( array(
    			'taxonomy' => $taxonomy,
    			'parent' => '0',
    			'hide_empty' => false,
    			) 
    		);
    
    		if ($top_level_terms) {
    
    			foreach ($top_level_terms as $top_level_term) {
    
    				$top_term_id = $top_level_term->term_id;
    				$top_term_slug = $top_level_term->slug;
    				$top_term_name = $top_level_term->name;
    				$top_term_tax = $top_level_term->taxonomy;
    
    				if ( $top_level_term = get_term( $top_term_id, $taxonomy ) ) {
    					$top_level_term_panel_name = $top_level_term->name;
    					$top_level_term_panel_slug = $top_level_term->slug;
    
    					$wp_customize->add_panel( 'cvsnews_panel_' . $top_level_term_panel_slug, array(
    						'title' => __( 'Options ' . $top_level_term_panel_name, 'cvsnews' ),
    						'priority' => '',
    						'description' => __('', 'cvsnews' ),
    						'capability' => 'edit_theme_options',
    						'active_callback' => 'callback_archive'
    						) 
    					);
    
    					break;
    
    				}
    
    				$second_level_terms = get_terms( array(
    					'taxonomy' => $top_term_tax,
    					'child_of' => $top_term_id,
    					'parent' => $top_term_id,
    					'hide_empty' => false,
    					) 
    				);
    
    				if ($second_level_terms) {
    
    					foreach ($second_level_terms as $second_level_term) {
    
    						$second_term_name = $second_level_term->name;
    						$second_term_id = $second_level_term->term_id;
    
    						if ( $second_level_term = get_term_by( 'id', $second_term_id, $taxonomy ) ) {
    
    							$second_level_term_panel_name = $second_level_term->name;
    							$second_level_term_panel_slug = $second_level_term->slug;
    
    							$wp_customize->add_panel( 'cvsnews_panel_' . $second_level_term_panel_slug, array(
    								'title' => __( 'Options ' . $second_level_term_panel_name, 'cvsnews' ),
    								'priority' => '',
    								'description' => __('', 'cvsnews' ),
    								'capability' => 'edit_theme_options',
    								'active_callback' => 'callback_archive'
    								)
    							);
    
    							break;
    
    						}
    
    					}/** END foreach **/
    
    					/** END .second-level-terms **/
    
    				}/** END if **/
    
    				/** END top-level-term **/
    
    			}/** END foreach **/
    
    			/** END top-level-terms **/
    
    		}/** END if **/
    
    		}/** END taxonomies **/
    
    	/* Panel: Ads */
    	$wp_customize->add_panel( 'cvsnews_panel_ads', array(
    		'title' => __( 'Ads', 'cvsnews' ),
    		'priority' => 260,
    		'description' => __('', 'cvsnews' ),
    		'capability' => 'edit_theme_options',
    			)
    		);
    
    	}
    }
    
    function callback_archive() {
    	if( is_archive() ){
    	return true;
    	} else {
    	return false;
    	}
    }
    • Este debate fue modificado hace 3 semanas, 1 día por Jose Luis. Razón: Etiquetar código
    • Este debate fue modificado hace 3 semanas, 1 día por Jose Luis. Razón: Corregir código
Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)
  • Moderador Jose Luis

    (@jose64)

    Hola

    AYUDAAAAAA
    ME SALE SIEMPRE LA CATEGORÍA POR DEFECTO

    ¿Dónde?, si no nos cuentas más nada no podemos ayudarte.

    Te dejo el enlace a las Instrucciones de uso de los foros, explica qué quieres hacer y cuál es el problema con el código que quieres usar para que alguien te pueda ayudar.

    Vale.
    Yo quiero generar un grupo de paneles y secciones diferenciados, tanto principales (opciones generales para el tema) y otros por categorías que se crean automáticamente tomando los valores del termino actual. Hasta hora, por medio del active_callback, me lo refleja en la página archivo, sin embargo, me sale sólo el termino 1 o la categoría por defecto.

    Estoy usando
    $taxonomies = get_taxonomies() y get_term()

Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)
  • Debes estar registrado para responder a este debate.