2017-05-15 5 views
0

Ich habe einen benutzerdefinierten Beitragstyp für mein Thema namens "Projekte" erstellt. Auf meiner Projektseite zeige ich zur Zeit alle Projekte auf der einen Seite mit dem folgenden Code an.Wordpress Custom Post Typ Index Bildausrichtung

Ich benutze archive-projects.php, die Paginierung verwendet, ähnlich wie Posts. Code wie folgt.

Wie gehe ich zum Erstellen einer paginierten Projekte Homepage statt nur alle verfügbaren Projekte anzuzeigen. Würde ich einfach zu meinem bestehenden Array hinzufügen (Beispiel 1) oder gibt es eine bestimmte Vorlage, die ich zum Beispiel verwenden sollte (home-projects.php)?

+0

Warum verwenden Sie Ihre eigene Abfrage hier zu beginnen? Die Archivierungsfunktion von Wordpress erstellt bereits die richtige Suchanfrage für Ihre. Verwenden Sie einfach die Vorlage "archiv.php" als Grundlage - erstellen Sie eine Kopie, benennen Sie sie entsprechend, so dass sie verwendet wird, wenn das Archiv für Ihren benutzerdefinierten Beitragstyp angezeigt wird, und passen Sie sie entsprechend an, um die gewünschte Ausgabe zu generieren. – CBroe

+0

Ja ich benutze archive-projects.php Vorlage für Archive. Da meine www.website.co.uk/projects/ jedoch nicht nach einer Archivvorlagendatei sucht, sucht sie nach einer page-template.php. Auf diese Weise kann ich auch Seiteninhalte von wp-admin einbinden. Ist das sinnvoll? – Chris

Antwort

1

dieses Versuchen gemäß der codex:

die „ausgelagerten“ Parameter auf eine Abfrage

Hinzufügen

Wenn WP_Query wird die Hauptschleife und die „ausgelagerten“ Parameter zu ändern ist nicht gesetzt muss es mit get_query_var() hinzufügen. Das ist so, dass WordPress genau weiß, auf welcher Seite es steht.

Zum Beispiel, wenn Ihre Abfrage sieht wie folgt aus (ohne die "ausgelagerten" Parameter):

<?php $the_query = new WP_Query('posts_per_page=3'); ?> 

Sie den Parameter wie folgt hinzu:

<?php 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 

$the_query = new WP_Query('posts_per_page=3&paged=' . $paged); 
?> 

Das nächste Beispiel ist genau das gleiche wie oben, aber mit den Parametern in einem Array:

<?php 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
$args = array(
    'posts_per_page' => 3, 
    'paged'   => $paged 
); 

$the_query = new WP_Query($args); 
?> 

Also in Ihrem speziellen Fall wäre es etwas Hängt wie:

<?php 
       $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
       $args = array('post_type' => 'bw_projects', 'posts_per_page' => 18, 'paged' => $paged); 
       $loop = new WP_Query($args); 
       while ($loop->have_posts()) : $loop->the_post(); 

       echo '<div class="project p-project" data-filter="">'; 
       echo '<a href="'.get_permalink($post->ID).'">'; 
       the_post_thumbnail(); 
       echo '</a>'; 
       echo '</div>'; 

       endwhile; 

      ?> 

Nachdem in Ihrer Paginierung Zugabe, dann ist es auch wahrscheinlich eine gute Idee, um die Schleife zurückgesetzt, um WP auf die physische Seite zurückzukehren (statt der Liste der Archive). Sie können dies tun mit:

<?php wp_reset_postdata(); ?> 
+0

Danke @Phill. Das funktioniert gut, nur die Links zu vorherigen und nächsten Seiten fehlen. Soll ich nur diejenigen, die meinem Beispiel entsprechen, oben auf der Seite einfügen? – Chris

+0

Es ist wahrscheinlich eine gute Idee, es zu versuchen. ;-) –

1

Hallo Überprüfen Sie unter dem Code für Paginierung.

<?php 
global $wp_query; 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
$args = array('post_type' => 'bw_projects', 'posts_per_page' => 5, 'paged' => $paged); 
$wp_query = new WP_Query($args); ?> 
<?php if ($wp_query->have_posts()) : ?> 
<?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?> 
    <h2><?php the_title(); ?></h2> 
<?php endwhile; ?> 
<div class="pagination"> 
    <?php previous_posts_link('New projects;'); ?> 
    <?php next_posts_link('Old projects;') ?> 
</div> 
<?php wp_reset_postdata(); ?> 
<?php else: ?> 
    <p><?php _e('No results'); ?></p> 
<?php endif; ?> 
<?php wp_reset_query(); ?> 
Verwandte Themen