La prima soluzione può essere utilizzare l' API delle impostazioni e creare 2 campi "Descrizione prodotti" e "Descrizione utilizzo" , dopodiché mostrare nel modello che i campi è facile come un:
$options = get_option('my_theme_options');
echo $options['prod_description'];
// echo $options['usage_description'];
Tuttavia, l'API delle impostazioni non è la parte migliore del core di WP e probabilmente crea una pagina delle impostazioni solo per quei campi che non ne vale la pena.
Un altro approccio è utilizzare la pagina (con un modello di pagina personalizzato ) come archivio.
Crea una pagina e chiamala "Archivio prodotti"
Nel mettere qualcosa del genere:
<?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();
Successivamente, nel back-end, crea una pagina e assegnala al modello appena creato. Scrivi quello che vuoi nel contenuto della pagina e quando aprirai la pagina, vedrai il contenuto della pagina e i prodotti.
Lo stesso può essere fatto per la pagina della tassonomia. Basta cambiare il modello di pagina e la query in esso.
Se, per qualsiasi motivo, è necessario utilizzare archive-products.php
come archivio del prodotto, un'alternativa è creare un modello personalizzato, ma utilizzarlo solo per recuperare il contenuto della pagina.
Crea un file php nel tuo tema e chiamalo 'page-prod-description.php' . In questo file inserisci solo:
<?php
/*
Template Name: Products Description
*/
wp_safe_redirect( home_url() );
exit();
Ciò che fa questo file è la creazione di un modello di pagina personalizzato. Quel modello può essere allegato alle pagine, ma quelle pagine non possono essere richiamate direttamente , perché se lo provi verrai reindirizzato alla home page.
Ora accedi al tuo back-end e crea una pagina, denominala "Descrizione prodotti" e assegna il modello di pagina appena creato. Se provi ad accedere alla pagina http://example.com/product-description
verrai reindirizzato alla home page.
Nel modello di archivio del prodotto archive-products.php
, puoi utilizzare il contenuto inserito in quella pagina in questo modo:
$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 );
}
Ora i tuoi clienti possono accedere al back-end e modificare la pagina "Descrizione dei prodotti" e tutto ciò che è scritto nel contenuto della pagina verrà mostrato nella pagina di archivio.
Lo stesso, ovviamente, può essere fatto per l'archivio di tassonomia.
main_query
sull'oggetto$wp_query
e non causerà l'output del dirittopost_type
per la query che si verifica nelle pagine di archivio. Il che renderàpre_get_posts
inutili le tue chiamate ai filtri come per una pagina di archivio. Questo è il problema principale Wordpress deve fornire un mezzo per GESTIRE anche gli archivi di tipo di posta e il contenuto degli archivi di tassonomia.