La première solution peut être d'utiliser l' API Paramètres et de créer 2 champs "Description des produits" et "Description de l'utilisation" , après cela, montrant dans votre modèle que les champs sont faciles comme:
$options = get_option('my_theme_options');
echo $options['prod_description'];
// echo $options['usage_description'];
Cependant, l'API des paramètres n'est pas la meilleure partie du noyau WP, et crée probablement une page de paramètres uniquement pour les champs qui n'en valent pas la peine.
Une autre approche consiste à utiliser la page (avec un modèle de page personnalisé ) comme archive.
Créez une page et appelez-la "Archive produit"
On y met quelque chose comme ça:
<?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();
Après cela, dans votre backend, créez une page et affectez-la au modèle que vous venez de créer. Écrivez ce que vous voulez dans le contenu de la page et lorsque vous ouvrirez la page, vous verrez le contenu de la page et les produits.
La même chose peut être faite pour la page de taxonomie. Modifiez simplement le modèle de page et la requête qu'il contient.
Si, pour une raison quelconque, vous devez utiliser archive-products.php
comme archive de produit, une alternative est de créer un modèle personnalisé, mais utilisez-le uniquement pour récupérer le contenu de la page.
Créez un fichier php dans votre thème et nommez-le 'page-prod-description.php' . Dans ce fichier mettez seulement:
<?php
/*
Template Name: Products Description
*/
wp_safe_redirect( home_url() );
exit();
Ce que fait ce fichier, c'est la création d'un modèle de page personnalisé. Ce modèle peut être joint à des pages, mais ces pages ne peuvent pas être appelées directement , car si vous l'essayez, vous serez redirigé vers la page d'accueil.
Connectez-vous maintenant sur votre backend et créez une page, nommez-la "Description des produits" et attribuez le modèle de page que vous venez de créer. Si vous essayez d'accéder à la page, http://example.com/product-description
vous serez redirigé vers la page d'accueil.
Dans votre modèle d'archive de produit archive-products.php
, vous pouvez utiliser le contenu inséré dans cette page comme suit:
$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 );
}
Maintenant, vos clients peuvent se connecter en backend et modifier la page "Description des produits" et tout est écrit dans le contenu de la page sera affiché dans la page d'archive.
La même chose, bien sûr, peut être faite pour les archives de taxonomie.
main_query
objet$wp_query
et l'empêchera de produire le droitpost_type
pour la requête se produisant sur les pages d'archives. Ce qui rendra vos appels à des filtres commepre_get_posts
pour une page d'archives sans valeur. C'est le problème majeur. Wordpress doit également fournir un moyen de GÉRER le contenu des archives des types de publications et des archives taxonomiques.Sloppy
moyen de gérer cela. Mais malheureusement, il n'y a pas de moyen propre de le faire. Wordpress doit fournir un moyen propre ici, OMI!Vous pouvez créer des pages normales, puis appliquer des modèles personnalisés qui contiennent la boucle personnalisée appropriée pour sortir le CPT. Ou vous pouvez créer une page d'options (ou ajouter une option au personnalisateur de thème), où le client peut ajouter du contenu via WYSIWYG, puis sortir ce contenu dans le modèle d'archive approprié.
la source