Erweiterte benutzerdefinierte Felder: single-books.php funktioniert, books.php nicht

Ich verwende CPT UI, um den Post-Typ (Bücher) zu erstellen. Ich laufe im Debug-Modus. Dies geschieht alles auf Standard, WordPress 3.8, Twenty Twelve Thema.

Ich habe eine Feldgruppe namens Bücher in ACF erstellt und drei Felder hinzugefügt: book_title, book_author, pub_year. Ich stelle die Feldgruppe ein, um anzuzeigen, ob der Post-Typ Bücher ist. Ich kopierte dann page.php, benannte es in books.php um und ersetzte den Standardheader durch den Vorlagennamen: Bücher. Ich habe eine neue Seite namens Bucheinträge erstellt und den Vorlagenstil auf Bücher eingestellt. Ich habe diese Seite zum Menü hinzugefügt. Ich habe das notwendige PHP-Skript in books.php hinzugefügt, um die Post-Daten anzuzeigen. Ich habe dann Bücher hinzufügen verwendet, um vier verschiedene Beispielbuchtitel unter Verwendung der benutzerdefinierten Felder einzugeben und zu speichern. Ich kann sie einzeln auf single-books.php sehen, aber wenn ich zu Bucheinträgen gehe, sehe ich … keine Postdaten. Ich sehe alles andere, wie Titel, Kopfzeile, Fußzeile, Seitenleisten, Kommentare, aber keine Post-Daten.

Unten ist der Code für books.php:

 

Solutions Collecting From Web of "Erweiterte benutzerdefinierte Felder: single-books.php funktioniert, books.php nicht"

Probieren Sie den folgenden Code aus. get_template_part( 'content', 'page' ); Sie auch daran, dass Sie get_template_part( 'content', 'page' ); weglassen können get_template_part( 'content', 'page' ); Wenn Sie nicht möchten, dass die content-page.php Vorlage Ihre Bücher anzeigt. Sie können Ihre eigene Datei wie content-book.php erstellen und get_template_part ändern, dass sie Ihre neue Vorlage enthält.

 < ?php /** * Template Name: Books * * * * @package WordPress * @subpackage Twenty_Twelve * @since Twenty Twelve 1.0 */ get_header(); ?> 
< ?php get_posts(array('post_type'=>'books')); ?> < ?php if ( have_posts() ) : ?> < ?php while ( have_posts() ) : the_post(); ?>

< ?php the_field('book_title'); ?>

< ?php the_field('book_author'); ?>

< ?php the_field('pub_year'); ?>

< ?php get_template_part( 'content', 'page' ); ?> < ?php comments_template( '', true ); ?> < ?php endwhile; // end of the loop. ?> < ?php endif; wp_reset_postdata(); ?>
< ?php get_sidebar(); ?> < ?php get_footer(); ?>

Die Abfrage für Ihre books.php-Datei enthält die Seite, der Sie die Vorlage zugeordnet haben. WordPress hat keine Möglichkeit zu wissen, dass Sie erwarten, dass Ihre Bücher cpt-Daten in dieser Abfrage angezeigt werden.

Anstatt eine Seite und eine benutzerdefinierte Vorlage zu erstellen, legen Sie für Ihre cpt eine Archivseite fest. Dies wird erreicht, indem has_archive bei der Registrierung Ihres Post-Typs auf “true” gesetzt wird. Sie können dann eine archive-books.php Vorlage erstellen und WordPress wird automatisch diese verwenden, um das Archiv anzuzeigen – keine Notwendigkeit für eine separate Seite.