wake-up-neo.net

Wie Sie get_next_post () veranlassen, beim Anzeigen des letzten Beitrags den ersten Beitrag zurückzugeben

Ich brauche eine Möglichkeit, um auf den ersten und den letzten erstellten Beitrag (CPT) zu verlinken.

Zum Beispiel bin ich im letzten Beitrag und wenn ich auf "Weiter" klicke, sollte ich zum ersten gehen.

Jetzt habe ich das

<?php
$next_post = get_next_post();

if ( ! empty( $next_post ) ) : ?>
  <div id="nextpost" >
    <a href="<?php echo get_permalink( $next_post->ID ); ?>">
    <!-- <?php echo get_the_post_thumbnail( $next_post->ID, 'thumbnail' ); ?> -->
    </a>
    <span class="nav-next">
      <?php next_post_link( '%link', __( 'Next project', 'twentyeleven' ) ); ?>
    </span>
  </div>
<?php endif; ?>

Ich brauche so etwas wie else: go to first post.
Ich würde das Gleiche tun, wenn ich im ersten Post bin und wenn ich auf "Vorherige" klicke, gehe ich zum letzten.

BEARBEITEN:

Ich habe einen Codeausschnitt gefunden, der die Reihenfolge der Navigation durch einzelne Posts wie den menu_order festlegt, sodass die Lösung jetzt möglicherweise anders ist.
Hier der Code von dem, wovon ich spreche

function square_adjacent_post_where($sql) {
  if ( !is_main_query() || !is_singular() )
    return $sql;

  $the_post = get_post( get_the_ID() );
  $patterns = array();
  $patterns[] = '/post_date/';
  $patterns[] = '/\'[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\'/';
  $replacements = array();
  $replacements[] = 'menu_order';
  $replacements[] = $the_post->menu_order;
  return preg_replace( $patterns, $replacements, $sql );
}
add_filter( 'get_next_post_where', 'square_adjacent_post_where' );
add_filter( 'get_previous_post_where', 'square_adjacent_post_where' );

function square_adjacent_post_sort($sql) {
  if ( !is_main_query() || !is_singular() )
    return $sql;

  $pattern = '/post_date/';
  $replacement = 'menu_order';
  return preg_replace( $pattern, $replacement, $sql );
}
add_filter( 'get_next_post_sort', 'square_adjacent_post_sort' );
add_filter( 'get_previous_post_sort', 'square_adjacent_post_sort' );
4
dborghez

Eröffnungen/letzter Beitrag machen Sinn, wenn wir einen Auftrag haben, auf den wir uns beziehen können. get_next_post() function benutze post date um zu entscheiden welcher post der nächste ist. Optional wird auch die Taxonomie verwendet. Wenn Sie jedoch die Funktion ohne Argument verwenden, ist nur das Datum relevant, sodass first post der neueste Beitrag in demselben Beitragstyp ist.

Um den neuesten Beitrag zu erhalten, können Sie einen neuen WP_Query , get_posts oder wp_get_recent_posts verwenden.

Beispiel mit letzterem:

<?php
$next_post = get_next_post();
if ( empty( $next_post ) ) {
  global $post;
  $args = array(
    'numberposts' => 1, 'post_type' => $post->post_type, 'post_status' => 'publish'
  );
  $recent = wp_get_recent_posts( $args, OBJECT );
  $next_post = ! empty( $recent ) ? array_shift( $recent ) : FALSE;
}

if ( ! empty( $next_post ) ) :
  // your code goes here
endif;
4
gmazzap