Ich versuche seit Tagen, einen benutzerdefinierten Beitragstyp mit Kategorien zu erstellen. Bisher habe ich das funktioniert, und ich kann Inhalte einfach hinzufügen und sie einer Kategorie zuweisen. Mein Code ist unten.
Was ich nicht verstehe und anscheinend nicht funktioniert, ist das Erstellen einer Archivseite zum Anzeigen von Beiträgen einer Kategorie.
Zum Beispiel: Mein Beitragstyp heißt Anzeigen. Meine Kategorie heißt Fotografen.
Kann die Seite dynamisch ermitteln, in welcher Kategorie Sie sich befinden, und alle benutzerdefinierten Beiträge anzeigen, die zu dieser Kategorie gehören?
Sie müssen im Grunde eine erstellen Seitenvorlage die eine angepasste wp_query enthält, damit WordPress feststellen kann, in welcher Kategorie Sie sich befinden.
Sobald Sie Ihre Seitenvorlage erstellt haben, können Sie eine Seite in Ihrem WordPress-Adminbereich erstellen … indem Sie die neue Seitenvorlage als Ihre Vorlage auswählen.
Und wenn Sie möchten, dass die Kategorie dynamisch ist, können Sie Ihre Seitenvorlage jederzeit so einrichten, dass sie einen $_GET-Parameter akzeptiert, um zu bestimmen, aus welcher Kategorie Anzeigen angezeigt werden sollen. So:
Hier ist ein Beispiel dafür, wie die Seitenvorlage aussehen könnte (dies hängt natürlich davon ab, welches Design Sie verwenden … dieses Beispiel wurde erstellt, um das Design Twentyfourteen zu verwenden):
<?php
/**
* Template Name: Advert Listing
*
*/
get_header(); ?>
<section id="primary" class="content-area">
<div id="content" class="site-content" role="main">
<?php
// Set the args array for the query to happen
$args = array(
'post_type' => 'adverts',
'post_status' => 'publish',
'posts_per_page' => 10
);
// Dynamically set the mycat argument from a $_GET parameter
if( isset($_GET['mycat']) ) {
$args['tax_query'] => array(
array(
'taxonomy' => 'advert_category',
'field' => 'slug',
'terms' => $_GET['mycat']
)
);
}
// Issue the query
$q = null;
$q = new WP_Query($args);
// Start the loop
if( $q->have_posts() ) : ?>
<header class="page-header">
<h1 class="page-title"><?php _e( 'Advert Listing:', 'twentyfourteen' ); ?></h1>
</header>
<?php
while ($q->have_posts()) : $q->the_post();
?>
<article id="post-<?php the_ID(); ?>" class="post-<?php the_ID(); ?> adverts type-adverts status-publish hentry">
<header class="entry-header">
<a href="https://stackoverflow.com/questions/16612411/<?php echo get_permalink(get_the_ID()); ?>"><h3 class="entry-title"><?php the_title(); ?></h3></a>
</header><!-- .entry-header -->
<div class="entry-content">
<?php the_excerpt(); ?>
</div>
</article>
<?php
endwhile;
// Previous/next post navigation.
twentyfourteen_paging_nav();
else :
// If no content, include the "No posts found" template.
get_template_part( 'content', 'none' );
endif;
wp_reset_query(); // Restore global post data stomped by the_post().
?>
</div><!-- #content -->
</section><!-- #primary -->
<?php
get_sidebar( 'content' );
get_sidebar();
get_footer();
Sie sollten in der Lage sein, zu /adverts zu navigieren. Ebenfalls, has_archive sollte eine Archivseite für Sie erstellen.
Warum ist das nicht die richtige Antwort? Übersehe ich etwas? Ich habe keine Ahnung, wovon die Hälfte der Antworten auf dieser Seite spricht!
Mit Typen können Sie den WordPress-Administrator anpassen, indem Sie Inhaltstypen, benutzerdefinierte Felder und Taxonomie hinzufügen. Sie können den WordPress-Administrator erstellen und ihn in Ihr eigenes Content-Management-System verwandeln.
Darf man natürlich mit einbeziehen 'post-type' => 'advert' auch in $args. Hoffe das hilft!
13garth
Also brauchte ich auch benutzerdefinierte Beitragstypen mit Kategorien.
Der folgende Code ist wirklich einfach und sauber. Buchstäblich Kopieren und Einfügen. und dann einfach an deine Bedürfnisse anpassen. Hoffe, das hilft den Menschen in der Zukunft.
Es im Grunde verknüpft die normalen WordPress-Kategorien mit Ihren benutzerdefinierten Beitragstypen. Das macht es Ihrem Kunden wirklich einfach, wenn er im WordPress-Verwaltungsbereich arbeitet. Es hat auch eine individuelle Taxonomie über Tags. Also Sie haben die Möglichkeit, Kategorien für alle Post-Typen oder eine postspezifische Taxonomie zu haben.
Der Code ist ziemlich selbsterklärend. Bitte stimmen Sie für meine Antwort. Ich muss meinen Repräsentanten aufbauen. Vielen Dank.
Sie müssen den Code in Ihre kopieren Funktionen.php Datei