2017-03-27 1 views
0

Ich möchte eine Nummerische Paginierung in meiner benutzerdefinierten Abfrage. dafür verwende ich dieses Skript in meiner Funktion:rel = "next" wird nicht hinzugefügt, um benutzerdefinierte Abfrage und Seite Beitragstyp

function wpbeginner_numeric_posts_nav() { 

if(is_singular()) 
    return; 

global $wp_query; 

/** Stop execution if there's only 1 page */ 
if($wp_query->max_num_pages <= 1) 
    return; 

$paged = get_query_var('paged') ? absint(get_query_var('paged')) : 1; 
$max = intval($wp_query->max_num_pages); 

/** Add current page to the array */ 
if ($paged >= 1) 
    $links[] = $paged; 

/** Add the pages around the current page to the array */ 
if ($paged >= 3) { 
    $links[] = $paged - 1; 
    $links[] = $paged - 2; 
} 

if (($paged + 2) <= $max) { 
    $links[] = $paged + 2; 
    $links[] = $paged + 1; 
} 

echo '<div class="navigation"><ul>' . "\n"; 

/** Previous Post Link */ 
if (get_previous_posts_link()) { 
    printf('<li>%s</li>' . "\n", get_previous_posts_link(__('Previous Page','tkh').'')); 
    add_filter('wpseo_prev_rel_link', get_previous_posts_link()); 
} 

/** Link to first page, plus ellipses if necessary */ 
if (! in_array(1, $links)) { 
    $class = 1 == $paged ? ' class="active"' : ''; 

    printf('<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url(get_pagenum_link(1)), '1'); 

    if (! in_array(2, $links)) 
     echo '<li>…</li>'; 
} 

/** Link to current page, plus 2 pages in either direction if necessary */ 
sort($links); 
foreach ((array) $links as $link) { 
    $class = $paged == $link ? ' class="active"' : ''; 
    printf('<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url(get_pagenum_link($link)), $link); 
} 

/** Link to last page, plus ellipses if necessary */ 
if (! in_array($max, $links)) { 
    if (! in_array($max - 1, $links)) 
     echo '<li>…</li>' . "\n"; 

    $class = $paged == $max ? ' class="active"' : ''; 
    printf('<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url(get_pagenum_link($max)), $max); 
} 

/** Next Post Link */ 
if (get_next_posts_link()) 
    printf('<li>%s</li>' . "\n", get_next_posts_link(__('Next Page','tkh').'')); 

echo '</ul></div>' . "\n"; 
} 

die rel = "next" und rel = "prev" Meta-Tags hinzufügen i verwenden:

function cor_rel_next_prev_pagination() { 

global $wp_query; 
$paged = get_query_var('paged') ? absint(get_query_var('paged')) : 1; 
//print_r(wp_count_pages()); 

if (get_previous_posts_link()) { ?> 
<link rel="prev" href="<?php echo get_pagenum_link($paged - 1); ?>"> 
<?php 
} 
if (get_next_posts_link('',5)) { ?> 
<link rel="next" href="<?php echo get_pagenum_link($paged + 1); ?>"> 
<?php 
} 
} 
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head'); 
add_action('wp_head', 'cor_rel_next_prev_pagination'); 

Und nun mein Problem: Sie sehen in das zweite Skript get_next_posts_link ('', 5). Wenn ich eine statische Zahl (5) in die Funktion schreibe, ist es perfekt. Aber ich kann es nicht dynamisch machen (z. B. mit: $ wp_query-> max_num_pages). Wahrscheinlich, weil $ wp_query in der Aktion wp_head nicht init ist. Auch ich kann wp_count_posts() nicht benutzen, weil ich denke, dass es nicht mit einer post_type Seite arbeitet. Also hauptsächlich: Wie kann man nicht arbeiten. Andy Vorschläge?

By the way, hier ist, wie ich Setup die Abfrage in meiner Seite:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
      $news_events = array(
       'numberposts'  => -1, 
       'post_type'   => ['news','event'], 
       'orderby'   => 'date', 
       //'posts_per_page' => get_option('posts_per_page'), 
       'posts_per_page' => 1, 
       'paged'    => $paged 
      ); 
      $wp_query = new WP_Query($news_events); 

      if ($wp_query->have_posts()) : while ($wp_query->have_posts()) : $wp_query->the_post(); 
+2

Wenn Sie eine Lösung haben, können Sie sie der Frage als Antwort und nicht als Bearbeitung hinzufügen. Sie müssen es jedoch nicht als beste Antwort akzeptieren - warten Sie vielleicht, bis jemand eine Verbesserung vorschlägt. –

Antwort

0

Vorerst i eine Lösung gefunden. aber es ist nicht perfekt. Ich habe in der cor_rel_next_prev_pagination() Funktion diese Zeile:

if (get_post_field('post_name', get_post()) == news_events) $max = ceil((wp_count_posts('event')->publish + wp_count_posts('news')->publish)/get_option('posts_per_page')); else $max = wp_count_posts()->publish/get_option('posts_per_page'); 

und auch in der gleichen Funktion:

if (get_next_posts_link('', $max)) { ?> 

aber vielleicht jemand hat eine bessere Lösung.

Verwandte Themen