Soporte » Diseño – Temas y plantillas » menu superior diferente dependiendo del post

  • Resuelto lujan82

    (@lujan82)


    Hola, en una web que estoy haciendo tengo una pagina de blog y otra de noticias, cada una con sus categorias obviamente. Lo que quería saber es como, o si se puede diferenciar entre unas categorias y otras para poder cambiar el template o el header en sus post, es decir, si el post pertenece a las categorias del blog que salga un template o un header diferente al de las categorias de noticias

Viendo 7 respuestas - de la 1 a la 7 (de un total de 7)
  • Buenas,

    No sé cómo lo tienes montado, pero lo más sencillo que yo veo es crear un Custom Post Type (CPT) para las Noticias, por ejemplo, dejando las «Entradas» para el Blog.

    Crear CPT (lo metes en functions.php, por ejemplo, si no sabes hacer un plugin):

    https://codex.wordpress.org/Post_Types

    function create_post_type() {
      register_post_type( 'noticias',
        array(
          'labels' => array(
            'name' => __( 'Noticias' ),
            'singular_name' => __( 'Noticia' )
          ),
          'public' => true,
          'has_archive' => true,
        )
      );
    }
    add_action( 'init', 'create_post_type' );

    De esta manera, en tu panel de WP tendrás por un lado «Entradas», referidas al blog y «Noticias», referidas a la página de Noticias.

    Después, creas una taxonomía para las Noticias y ya tendrías separadas las categorías asociadas a las Entradas y las categorías asociadas a las Noticias.

    https://codex.wordpress.org/Taxonomies

    function people_init() {
    	// create a new taxonomy
    	register_taxonomy(
    		'news-category',
    		'noticias',
    		array(
    			'label' => __( 'Categoría de Noticias' ),
    			'rewrite' => array( 'slug' => 'categoria-noticia' ),
    			'capabilities' => array(
    				'assign_terms' => 'edit_guides',
    				'edit_terms' => 'publish_guides'
    			)
    		)
    	);
    }
    add_action( 'init', 'people_init' );

    Por último, crearía el archivo «single-noticias.php» y con este template podrías añadirle un header exclusivo para las Noticias, dejando el «single.php» para las Entradas del blog, con otro header.

    Ya nos dices si te parece buena idea o no.

    Saludos.

    Iniciador del debate lujan82

    (@lujan82)

    @jfosela81 Claro clarinete,muchas gracias por la respuesta y por tu tiempo, así lo haré.

    Iniciador del debate lujan82

    (@lujan82)

    @jfosela81 he seguido tu ejemplo, la duda que me sale es que cuando creo una nueva noticia no me da la opcion de elegir o crear etiqueta para asignaerle, es normal o he hecho algo mal?

    Lo que me he dado cuenta ahora es que en las entradas tb se le puede asignar directametne un template y a ese template le puedo asignar un header, seria la opción mas rápida para mi pero como nunca he hecho lo de los custom post type me gustaría dejarlo de esta manera que me has comentado.

    Buenas,

    Lo de que no te salen las etiquetas para asignarle es en el nuevo CPT ¿verdad?
    Eso es normal, porque por defecto, en los nuevos CPT no aparecen. Simplemente añade esta línea dentro de los argumentos que le pasas al register_post_type:

    'taxonomies' => array( 'post_tag' ),

    Tu función quedaría así:

      register_post_type( 'noticias',
        array(
          'labels' => array(
            'name' => __( 'Noticias' ),
            'singular_name' => __( 'Noticia' )
          ),
          'public' => true,
          'has_archive' => true,
          'taxonomies'=> array( 'category', 'post_tag' ),
        )
      );

    Las categorías customizadas (taxonomía) te aparecen en el nuevo CPT?

    Lo de asignar un template a las entradas en teoría no se puede hacer, eso se hace sólo en las páginas.

    Lo que pasa es que las entradas nativas de WP tienen como template el archivo «single.php» y el del CPT, siguiendo el ejemplo sería «single-noticias.php»

    Mira a ver si con esto puedes avanzar.

    Saludos

    Iniciador del debate lujan82

    (@lujan82)

    Gracias por la ayuda, Aunque al final lo he hecho con los templates dejaré que el cliente elija la mas cómodo para el.

    Un saludo

    Iniciador del debate lujan82

    (@lujan82)

    @jfosela81

    Lo pasé por alto pero desde la 4.7 poniendo esto

    /*
    Template Name: My custom layout
    Template Post Type: post, page, product, etc
    */

    se puede usar los templates que como te puse es como lo tengo. Si no lo sabias me alegro de comentartelo y que te pueda servir en un futuro

    Un saludo

    Anda! pues no, no lo sabía, muchas gracias!!

    Pensaba q los CPT solo se cambiaban de template con el control de ficheros «single-CPT.php»

    Qué bueno 🙂

Viendo 7 respuestas - de la 1 a la 7 (de un total de 7)
  • El debate ‘menu superior diferente dependiendo del post’ está cerrado a nuevas respuestas.