Die erste Lösung kann darin bestehen, die Einstellungs-API zu verwenden und zwei Felder "Produktbeschreibung" und "Verwendungsbeschreibung" zu erstellen. Anschließend wird in Ihrer Vorlage angezeigt, dass Felder wie folgt einfach sind:
$options = get_option('my_theme_options');
echo $options['prod_description'];
// echo $options['usage_description'];
Die Einstellungs-API ist jedoch nicht der beste Teil des WP-Kerns und erstellt wahrscheinlich eine Einstellungsseite nur für die Felder, die sich nicht lohnen.
Ein anderer Ansatz ist die Verwendung einer Seite (mit einer benutzerdefinierten Seitenvorlage ) als Archiv.
Erstellen Sie eine Seite und nennen Sie sie "Produktarchiv".
Darin setzen Sie so etwas:
<?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();
Erstellen Sie anschließend in Ihrem Backend eine Seite und weisen Sie sie der gerade erstellten Vorlage zu. Schreiben Sie alles, was Sie wollen, in den Seiteninhalt. Wenn Sie die Seite öffnen, sehen Sie den Seiteninhalt und die Produkte.
Das gleiche kann für die Taxonomieseite gemacht werden. Ändern Sie einfach die Seitenvorlage und die darin enthaltene Abfrage.
Wenn Sie aus irgendeinem Grund archive-products.php
als Produktarchiv verwenden müssen, können Sie alternativ eine benutzerdefinierte Vorlage erstellen, diese jedoch nur zum Abrufen des Seiteninhalts verwenden.
Erstellen Sie eine PHP-Datei in Ihrem Thema und nennen Sie es "page-prod-description.php" . In diese Datei nur setzen:
<?php
/*
Template Name: Products Description
*/
wp_safe_redirect( home_url() );
exit();
Diese Datei erstellt eine benutzerdefinierte Seitenvorlage. Diese Vorlage kann an Seiten angehängt werden, diese Seiten können jedoch nicht direkt aufgerufen werden . Wenn Sie es versuchen, werden Sie zur Startseite weitergeleitet.
Melden Sie sich jetzt in Ihrem Backend an und erstellen Sie eine Seite, nennen Sie sie "Produktbeschreibung" und weisen Sie die gerade erstellte Seitenvorlage zu. Wenn Sie versuchen, auf die Seite zuzugreifen, werden http://example.com/product-description
Sie zur Startseite weitergeleitet.
In Ihrer Produktarchivvorlage archive-products.php
können Sie den auf dieser Seite eingefügten Inhalt folgendermaßen verwenden:
$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 );
}
Jetzt können sich Ihre Kunden im Backend anmelden und die Seite "Produktbeschreibung" bearbeiten. Alles, was in den Seiteninhalt geschrieben ist, wird auf der Archivseite angezeigt.
Das Gleiche kann natürlich auch für das Taxonomiearchiv getan werden.
main_query
Objekt aus$wp_query
und führt dazu, dass es nicht das Rechtpost_type
für die Abfrage auf Archivseiten ausgibt . Dadurch werden Ihre Aufrufe an Filter wiepre_get_posts
für eine Archivseite wertlos. Dies ist das Hauptproblem. Wordpress muss auch die Möglichkeit bieten, Post Type Archives und Taxonomy Archives Content zu verwalten.Sloppy
. Leider gibt es dafür keinen sauberen Weg. Wordpress muss hier einen sauberen Weg bieten, IMO!Sie können normale Seiten erstellen und dann benutzerdefinierte Vorlagen anwenden, die die entsprechende benutzerdefinierte Schleife zur Ausgabe des CPT enthalten. Sie können auch eine Optionsseite erstellen (oder dem Theme Customizer eine Option hinzufügen), auf der der Client Inhalte über WYSIWYG hinzufügen und diese Inhalte dann in der entsprechenden Archivvorlage ausgeben kann.
quelle