問題描述

我想要 wp_link_pages(mutli-page 帖子) 在這些數字之前顯示頁碼,字母”previous”,以及這些數字後的”next” 。看起來像這樣:

上一頁 1,2,3,4 下一頁

我試圖這樣做沒有外掛。這是我迄今為止所嘗試過的,但它不起作用,只顯示數字。

<?php wp_link_pages(array(
    'before' => '<span style="clear:both; display:block">Pages', 
    'after'  => '</span>',
    'next_or_number'=>'number',
    'previouspagelink' => 'previous',
    'nextpagelink'=> 'Next'
)); ?>

最佳解決方案

您使用的功能,wp_link_pages Codex,預設情況下沒有您要查詢的功能。

但是,您可以透過使用回撥函式輕鬆擴充套件它,該函式在該函式引數上註冊為過濾器:

add_filter('wp_link_pages_args', 'wp_link_pages_args_prevnext_add');

然後,過濾器將修改該功能 on-the-fly 中使用的引數,並將丟失的連結注入 prevnext 引數,這些引數在編號的連結列表 (next_or_number' => 'number') 的左側和右側輸出:

/**
 * Add prev and next links to a numbered page link list
 */
function wp_link_pages_args_prevnext_add($args)
{
    global $page, $numpages, $more, $pagenow;

    if (!$args['next_or_number'] == 'next_and_number') 
        return $args; # exit early

    $args['next_or_number'] = 'number'; # keep numbering for the main part
    if (!$more)
        return $args; # exit early

    if($page-1) # there is a previous page
        $args['before'] .= _wp_link_page($page-1)
            . $args['link_before']. $args['previouspagelink'] . $args['link_after'] . '</a>'
        ;

    if ($page<$numpages) # there is a next page
        $args['after'] = _wp_link_page($page+1)
            . $args['link_before'] . ' ' . $args['nextpagelink'] . $args['link_after'] . '</a>'
            . $args['after']
        ;

    return $args;
}

用法:

wp_link_pages(array(
    'before' => '<p>' . __('Pages:'),
    'after' => '</p>',
    'next_or_number' => 'next_and_number', # activate parameter overloading
    'nextpagelink' => __('Next'),
    'previouspagelink' => __('Previous'),
    'pagelink' => '%',
    'echo' => 1 )
);

如果您的主題始終使用上一個和下一個連結,那麼您可以稍稍更改該功能,使其成為預設行為,每當使用 number(預設) 時,您需要在主題中寫入更少。

這是天鵝絨藍調建議的一個稍微不同的實現。

次佳解決方案

wp_link_pages()功能僅顯示文字或數字,從不同時顯示。如果您檢視該函式的程式碼,您將看到沒有選項可以透過傳遞引數使其行為不同。

話雖如此,沒有外掛,有三種方法可以做到這一點:

  1. 在主題的 functions.php 檔案中建立自己的功能。工作,但是你會有一個新的功能。

  2. 使用 2-3 個 wp_link_pages()例項。非常低效的駭客

  3. 使用過濾器首選方法見下文。

我在部落格上寫了一篇關於如何做到這一點的文章。基本上,我使用 wp_link_pages_args 過濾器,並在 functions.php 檔案中新增一個功能,該函式新增了一個新的選項’next_and_number’ 。

WordPress Hack: Display Number & Next/Previous Links with wp_link_pages()

第三種解決方案

嘗試這樣,你可以更自定義它。但它應該像你想要的那樣做:-)

function tp_link_pages() {
    global $page, $numpages;

    echo paginate_links( array(
        'format' => get_permalink() . '%#%/',
        'current' => $page,
        'total' => $numpages
    ) );
}

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。