Ein-Eltern-Post listet Kinderposts mit Seitenumbruch auf

Ich möchte auf dieser Antwort aufbauen, um Seitenumbrüche und einige andere functionen zu integrieren.

Wir haben über 1.600 Einträge in unserem Glossar, so dass bestimmte Briefe weit mehr als 20 (meine max Beiträge / Seite) Einträge haben.

Wenn ein Benutzer auf “A” klickt oder auf “/ dev / glossary / a” zugreift, möchte ich, dass sie eine Liste aller Einträge mit dem übergeordneten “A” sehen.

Ich würde auch gerne:

  • Die Liste muss in alphabetischer Reihenfolge sein
  • Die Anzahl der Einträge für dieses übergeordnete Element wird oben auf der Seite angezeigt
  • Die Liste, die paginiert werden soll

Ich hatte einen grundlegenden Versuch mit $paged = (get_query_var('page')) ? get_query_var('page') : 1; $paged = (get_query_var('page')) ? get_query_var('page') : 1; und das paged Argument in der WP_Query , aber mein next_posts_link wird nicht einmal angezeigt.

Ich bin mir nicht sicher, wo ich damit anfangen soll, also würde jede Anleitung sehr geschätzt werden.

Solutions Collecting From Web of "Ein-Eltern-Post listet Kinderposts mit Seitenumbruch auf"

So etwas sollte die Reihenfolge nach Titel und Paginierung ändern:

  global $wp_rewrite, $wp_query; if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> 

< ?php the_title(); ?>

< ?php //If top level, find children if($post->post_parent == 0): $children = new WP_Query(array( 'post_type'=>'page', 'post_parent'=>$post->ID, 'paged' => $paged, 'posts_per_page' => 20, 'orderby' => 'title', 'order' => ASC )); if($children->have_posts()): ?>
    < ?php while ( $children->have_posts() ) : $children->the_post(); ?>
  • < ?php the_title();?>
  • < ?php endwhile; ?>
$wp_query->query_vars['paged'] > 1 ? $current = $wp_query->query_vars['paged'] : $current = 1; $pagination = array( 'base' => @add_query_arg('paged','%#%'), 'total' => $wp_query->max_num_pages, 'current' => $current ); if( $wp_rewrite->using_permalinks() ) $pagination['base'] = user_trailingslashit( trailingslashit( remove_query_arg( 's', get_pagenum_link( 1 ) ) ) . 'page/%#%/', 'paged' ); if( !empty($wp_query->query_vars['s']) ) $pagination['add_args'] = array( 's' => get_query_var( 's' ) ); ?> < ?php echo paginate_links( $pagination ); ?> < ?php else: ?> < ?php echo 'No children';?> < ?php endif; ?> < ?php wp_reset_postdata(); ?> < ?php else://Not top level, display normal post ?> < ?php the_content(); ?> < ?php endif;?> < ?php endwhile; // end of the loop. ?> < ?php endif; ?>

Sie können die function paginate_links an die Stelle verschieben, an die die Seitennummerierung übergeben werden soll.

Um die Gesamtzahl der Einträge anzuzeigen, können Sie die Variable $ wp_query innerhalb der Schleife verwenden.

 < ?php echo $wp_query->found_posts; ?> 

Ich schrieb über das Erstellen einer benutzerdefinierten “Glossar” Taxonomie aus Posttiteln. es ist nicht perfekt, aber es könnte relevant sein:

http://www.kathyisawesome.com/424/alphabetische-posts-glossary/

Es ist automatisch, aber es gibt keinen Grund, warum Sie keine Metabox hinzufügen könnten, wenn die automatisch generierten Buchstaben nicht gut genug funktionieren.

von dort würde ich wahrscheinlich den pre_get_posts () Hook verwenden, um 20 Posts / Seite und alphabetische Reihenfolge zu erzwingen (irgendwie kann ich nicht glauben, dass ich den Auftrag nicht schon hatte … sollte wahrscheinlich mein Tutorial irgendwann aktualisieren.

Dank @ DaveHunts Antwort und dieser ausgezeichneten Antwort konnte ich den folgenden Code zusammenfügen.

Es ist wichtig zu beachten, dass wegen der Seite is_single () die paged Variable immer auf 1 gesetzt wird. Ich habe viel Zeit dafür aufgewendet , weil ich das übersehen habe!

 if($post->post_parent == 0): if ( get_query_var( 'tpage' ) > 0 ) $paged = get_query_var( 'tpage' ); else $paged = 1; $base = trailingslashit( get_permalink( $post->ID ) ); $children = new WP_Query( array( 'post_type'=>'glossary', 'post_parent'=>$post->ID, 'paged' => $paged, 'posts_per_page' => 20, 'orderby' => 'title', 'order' => ASC ) ); if ( $children->have_posts() ) : ?> < ?php while ( $children->have_posts() ) : $children->the_post(); ?> < ?php get_template_part( 'list', 'glossary' ); ?> < ?php endwhile; ?> < ?php $links = array( 'base' => $base . 'tpage/%#%', 'total' => $children->max_num_pages, 'current' => $paged ); ?>  < ?php else: ?> Sorry, there are no entries in our glossary for this letter. < ?php endif; ?> < ?php wp_reset_postdata(); ?> < ?php else : ?> 

Ich hoffe, dies hilft anderen Benutzern, ein ähnliches Problem zu finden.