La primera solución puede ser usar la API de configuración y crear 2 campos "Descripción de productos" y "Descripción de uso" , después de eso, mostrar en su plantilla que los campos es fácil 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 cree una página de configuración solo para que los campos no valgan la pena.
Otro enfoque es usar la página (con una plantilla de página personalizada ) como archivo.
Cree una página y llámela "Archivo de productos"
En él pon algo como eso:
<?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ígnela a 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. Simplemente cambie la plantilla de página y la consulta en ella.
Si, por algún motivo, necesita usarlo archive-products.php
como archivo del producto, una alternativa es crear una plantilla personalizada, pero úsela solo para recuperar el contenido de la página.
Cree un archivo php en su tema y asígnele el nombre 'page-prod-description.php' . En este archivo pon solo:
<?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 invocar directamente , porque si lo prueba, será redirigido a la página de inicio.
Ahora inicie sesión en su servidor y cree una página, llámela "Descripción de los productos" y asigne la plantilla de página que acaba de crear. Si intenta acceder a la página http://example.com/product-description
, será 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 de la siguiente manera:
$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 los 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.
main_query
objeto$wp_query
y hará que no genere el derechopost_type
para que la consulta ocurra en las páginas de archivo. Lo que hará que sus llamadas a filtros comopre_get_posts
para una página de archivo no tengan valor. Este es el principal problema. Wordpress necesita proporcionar un medio para GESTIONAR también los Archivos de tipo de publicación y el Contenido de archivos de taxonomía.Sloppy
forma de manejar esto. Pero desafortunadamente no hay una manera limpia de hacer esto. Wordpress necesita proporcionar una manera limpia aquí, ¡OMI!Puede crear páginas normales y luego aplicar plantillas personalizadas que contienen el bucle personalizado apropiado 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 generar este contenido en la plantilla de archivo correspondiente.
fuente