Shortcode, der benutzerdefinierte Beitragstypen anzeigt

Ich habe ein Problem mit einem Shortcode, den ich erstelle.

Ich habe 5-10 verschiedene benutzerdefinierte Post-Typen, und anstatt eine Vorlage für jeden einzelnen Post-Typ zu erstellen, verwende ich lieber eine normale Seite und importiere die Posts über einen Shortcode.

Um weiter zu erklären, habe ich eine Seite mit dem Titel “Attraktionen” und einen Post-Typ namens “Attraktion”. Auf der Seite füge ich den Shortcode ein -> [feed type = “attraction” limit = “5”]

Dadurch werden alle Posts unter dem benutzerdefinierten Posttyp “attraction” ausgegeben.

Das Problem, das ich habe, ist es richtig zu paginieren. Ich habe tausend Möglichkeiten gelesen, um benutzerdefinierte Post-Typen zu paginieren, und der Code, den ich gerade benutze, neigt dazu, nach so vielen Leuten zu funktionieren, aber ich kann das nicht innerhalb des Shortcodes schaffen. Gibt es einen Grund dafür?

Derzeit wird die Seite mit fünf Posts in Ordnung angezeigt, jedoch nicht die nächsten Posts-Links. Wenn ich die URL + / Seite / 2 eintippe, wird die zweite Seite korrekt mit den nächsten 5 Posts in der Sektion angezeigt. Es scheint also, dass die Paginierung funktioniert, aber ich kann nicht darauf zugreifen, weil kein Next / Previous Link erscheint.

Der Vorteil auf diese Weise ist, dass ich eine normale Seite verwenden, die Posts importieren kann, und ich kann Inhalt oberhalb und unterhalb der aufgerufenen Shortcode einfügen.

Hoffe das alles macht Sinn.

Heres meine Kurzcode ->

function section_feed_shortcode( $atts ) { extract( shortcode_atts( array( 'limit' => -1, 'type' => 'post'), $atts ) ); global $paged; $q = new WP_Query( array ( 'posts_per_page' => $limit, 'post_type' => $type, order => 'ASC', orderby =>'menu_order', 'paged' => $paged ) ); $list = ' '; while ( $q->have_posts() ) { $q->the_post(); $list .= ''; } return '
' . $list . '' . '' . '
' . wp_reset_query(); } add_shortcode( 'feed', 'section_feed_shortcode' );

Solutions Collecting From Web of "Shortcode, der benutzerdefinierte Beitragstypen anzeigt"

ok, ich bin immer noch nicht begeistert von der Idee einer zweiten Abfrage, aber du hast recht, es ist schwer, den Archiven Seiten Inhalt hinzuzufügen.

Es gab 3 Probleme, die ich gefunden habe:

  1. next_posts_link und previous_posts_link beide echo, du brauchst ihre get_ äquivalente.

  2. Wenn Sie get_next_posts_link nachschlagen, finden Sie, dass es auf der globalen $ wp_query … basiert, die in Ihrem Fall immer für die tatsächliche “Seite” und nicht für die Abfrage des Shortcodes war. Sie müssen dann tatsächlich Abfragen_Posts und dann die ursprüngliche Abfrage quetschen. Ich hoffe, dass die Reset-Abfrage funktioniert, aber ich bin mir nicht 100% sicher. Das musst du testen.

  3. nicht sicher, dass dies ein Problem war, aber ich sehe normalerweise die $ paged Variable auf diese Weise definiert, also ging ich damit.

     function section_feed_shortcode( $atts ) { extract( shortcode_atts( array( 'limit' => -1, 'type' => 'post'), $atts ) ); $paged = get_query_var('paged') ? get_query_var('paged') : 1; query_posts( array ( 'posts_per_page' => $limit, 'post_type' => $type, 'order' => 'ASC', 'orderby' =>'menu_order', 'paged' => $paged ) ); $list = ' '; while ( have_posts() ) { the_post(); $list .= ''; } return '
    ' . $list . '' . '' . '
    ' . wp_reset_query(); } add_shortcode( 'feed', 'section_feed_shortcode' );