¿Agregar contenido a páginas de archivo y taxonomía en tipos de publicaciones personalizadas?

8

Tengo un tipo de publicación personalizado llamado "Productos" y una taxonomía llamada "Uso". En mi página de inicio de "Productos" me gustaría tener contenido personalizado que el cliente pueda editar a través de WYSIWYG. Lo mismo ocurre con la página de destino de taxonomía. Mi idea era crear páginas falsas y simplemente colocar el contenido a través de ID en mis plantillas de archive-products.php y taxonomy-use.php, pero tenía curiosidad por saber si había una mejor manera de manejarlo.

    
pregunta paper_robots 07.02.2014 - 04:19

2 respuestas

13

La primera solución puede ser utilizar la API de configuración y crear 2 campos "Descripción de productos" y < em> "Descripción de uso" , después de eso, se muestra en la plantilla que los campos son fáciles como:

$options = get_option('my_theme_options');
echo $options['prod_description'];
// echo $options['usage_description'];

Sin embargo, la API de configuración no es la mejor parte del núcleo de WP y, probablemente, crear una página de configuración solo para los campos no vale la pena.

Otro enfoque es usar la página (con una plantilla de página personalizada ) como archivo.

Crea una página y llámala "Archivo de productos"

En eso pongo algo así:

<?php
/*
Template Name: Products Archive
*/

 get_header();

 if ( have_posts() ) the post();

 the_content(); // this will output the page content     

 $p_query = new WP_Query('post_type=products');
 if ( $p_query->have_posts() ) { while( $p_query->have_posts() ) {
   $p_query->the_post();
   // this will require a 'entry-product.php' where you can put all your product markup
   get_template_part('entry', 'product');
 } }
 wp_reset_postdata();

 get_footer();

Después de eso, en su backend, cree una página y asígnele la plantilla que acaba de crear. Escriba lo que quiera en el contenido de la página y cuando abra la página, verá el contenido de la página y los productos.

Lo mismo se puede hacer para la página de taxonomía. Solo cambia la plantilla de página y la consulta en ella.

Si, por cualquier motivo, necesita usar archive-products.php como archivo del producto, una alternativa es crear una plantilla personalizada, pero usarla solo para recuperar el contenido de la página.

Crea un archivo php en tu tema y llámalo 'page-prod-description.php' . En este archivo solo poner:

<?php
/*
Template Name: Products Description
*/
wp_safe_redirect( home_url() );
exit();

Lo que hace este archivo, es crear una plantilla de página personalizada. Esa plantilla se puede adjuntar a las páginas, pero esas páginas no se pueden llamar directamente , porque si lo intentas, serás redirigido a la página de inicio.

Ahora inicie sesión en su backend y cree una página, titúlela "Descripción de productos" y asigne la plantilla de página que se acaba de crear. Si intentas acceder a la página http://example.com/product-description , serás redirigido a la página de inicio.

En la plantilla de archivo de su producto, archive-products.php , puede usar el contenido insertado en esa página así:

$desc = get_pages('meta_key=_wp_page_template&meta_value=page-prod-description.php');
if ( ! empty($desc) ) {
   $page = array_shift($desc);
   echo apply_filters('the_content', $page->post_content );
}

Ahora sus clientes pueden iniciar sesión en el backend y editar la página "Descripción de productos" y todo lo que está escrito en el contenido de la página se mostrará en la página de archivo.

Lo mismo, por supuesto, se puede hacer para el archivo de taxonomía.

    
respondido por el gmazzap 07.02.2014 - 11:48
0

Puede crear páginas normales y luego aplicar plantillas personalizadas que contengan el bucle personalizado adecuado para generar el CPT. O puede crear una página de opciones (o agregar una opción al Personalizador de temas), donde el cliente puede agregar contenido a través de WYSIWYG y luego mostrar este contenido en la plantilla de archivo correspondiente.

    
respondido por el markcbain 07.02.2014 - 07:22

Lea otras preguntas en las etiquetas