2012-10-01 27 views
0

我有一些很長的帖子,有些有超過50頁(),當使用wp_link_pages時,它給了我50個內部帖子鏈接,顯然這是不可用的。添加一個範圍到WordPress的帖子分頁

我需要爲wp_link_pages函數添加一個範圍,因爲現在我們輸出了50個分頁鏈接。

輸出應該是這樣的:... 45 * 6 * 78 ...

我有邏輯添加的範圍內,但現在我需要弄清楚如何將它添加到現有的wp_link_pages函數?

下面是例子功能:

function limitPagination(){ 
    $displayPages = 5; 
    $firstPage = 1; 
    $lastPage = $numpages > 5; 

    while($numpages > $displayPages){ 
     if(($pageNow > $firstPage +2) && ($pageNow < $lastPage - 2)){ 
      echo (($pageNow - 2).($pageNow - 1).$pageNow.($pageNow + 1).($pageNow + 2)); 
     } 
    } 
} 

這是我需要我的例子功能添加到函數:

// Add prev and next links to a numbered link list 

function custom_wp_link_pages($args = '') { 
    $defaults = array(
     'before' => '<p id="post-pagination">' . __('Pages:'), 
     'after' => '</p>', 
     'text_before' => '', 
     'text_after' => '', 
     'next_or_number' => 'number', 
     'nextpagelink' => __('Next page'), 
     'previouspagelink' => __('Previous page'), 
     'pagelink' => '%', 
     'echo' => 1 
     ); 

    $r = wp_parse_args($args, $defaults); 
    $r = apply_filters('wp_link_pages_args', $r); 
    extract($r, EXTR_SKIP); 

    global $page, $numpages, $multipage, $more, $pagenow; 

    $output = ''; 
    if ($multipage) { 
     if ('number' == $next_or_number) { 
      $output .= $before; 
      for ($i = 1; $i < ($numpages + 1); $i = $i + 1) { 
       $j = str_replace('%', $i, $pagelink); 
       $output .= ' '; 
       if ($i != $page || ((! $more) && ($page == 1))) 
        $output .= _wp_link_page($i); 
       else 
        $output .= '<span class="current-post-page">'; 

       $output .= $text_before . $j . $text_after; 
       if ($i != $page || ((! $more) && ($page == 1))) 
        $output .= '</a>'; 
       else 
        $output .= '</span>'; 
       } 
     $output .= $after; 
      } else { 
       if ($more) { 
        $output .= $before; 
        $i = $page - 1; 
        if ($i && $more) { 
         $output .= _wp_link_page($i); 
         $output .= $text_before . $previouspagelink . $text_after . '</a>'; 
         } 
         $i = $page + 1; 
         if ($i <= $numpages && $more) { 
          $output .= _wp_link_page($i); 
          $output .= $text_before . $nextpagelink . $text_after . '</a>'; 
         } 
         $output .= $after; 
        } 
       } 
      } 
     if ($echo) 
     echo $output; 
     return $output; 
} 

回答

0

在你的目標函數的鉤子是這樣的:

$r = apply_filters('wp_link_pages_args', $r); 

這意味着你運行你的limitPagination函數,你鉤入wp_link_pages_args。這也意味着您的limitPagination函數必須接受$r作爲參數,並返回修改的$r而不是回顯輸出。

+0

當談到理解邏輯在這裏的工作方式時,我很可怕。那麼,我在修改後的$ r中返回的是具有next_or_number的附加參數的新數組? – HjalmarCarlson

+0

看看這篇關於WP過濾器的文章:http://codex.wordpress.org/Plugin_API#Filters基本上,如果一個字符串進入過濾器,一個字符串必須出來;如果一個數組進入,一個數組出來了。在你的情況下,'$ r'是一個數組。是的,你可以添加更多的參數。 – dnagirl

相關問題