Aggiunta di contenuti alle pagine di archivio e tassonomia su tipi di post personalizzati?


8

Ho un tipo di post personalizzato chiamato "Prodotti" e una tassonomia chiamata "Utilizzo". Nella mia landing page "Prodotti" vorrei avere contenuti personalizzati che possono essere modificati dal cliente tramite WYSIWYG. Lo stesso vale per la landing page della tassonomia. Il mio pensiero era quello di creare pagine false e semplicemente trascinare il contenuto tramite ID nei miei modelli archivio-prodotti.php e tassonomia-utilizzo.php, ma ero curioso di sapere se c'era un modo migliore per gestirlo.

Risposte:


12

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.phpcome 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-descriptionverrai 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.


Tuttavia, ciò influirà main_querysull'oggetto $wp_querye non causerà l'output del diritto post_typeper la query che si verifica nelle pagine di archivio. Il che renderà pre_get_postsinutili 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.
Solomon Closson,

Entrambi i metodi forniti sono un Sloppymodo per gestirlo. Ma sfortunatamente non esiste un modo pulito per farlo. Wordpress deve fornire un modo chiaro qui, IMO!
Solomon Closson,

0

È possibile creare pagine normali, quindi applicare modelli personalizzati che contengono il ciclo personalizzato appropriato per generare il CPT. In alternativa, è possibile creare una pagina di opzioni (o aggiungere un'opzione al Personalizzatore temi), in cui il client può aggiungere contenuto tramite WYSIWYG e quindi generare questo contenuto nel modello di archivio appropriato.


Qualche esempio del codice di base che useresti per farlo?
Brad Dalton,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.