2

我修改了我的WordPress的functions.php顯示分頁:如何在Wordpress分頁添加上一個/下一個類? (paginate_links)

<?php echo paginate_links(array(
    'prev_text'   => __('Previous Page'), 
    'next_text'   => __('Next Page'), 
    'type'    => 'list' 
)); ?> 

輸出幾乎是完美的:

<ul class="page-numbers"> 
    <li> 
     <span class="page-numbers current">1</span> 
    </li> 
    <li> 
     <a class="page-numbers" href="https://domain.tld/page/2/">2</a> 
    </li> 
    … 
    <li> 
     <a class="page-numbers" href="https://domain.tld/page/10/">10</a> 
    </li> 
    <li> 
     <a class="next page-numbers" href="https://domain.tld/page/2/">Next Page</a> 
    </li> 
</ul> 

是有辦法的類添加到PrevNext列表項目li

<li class="prev-list-item"> 
     <a class="prev page-numbers" href="http://domain.tld/page/1/">Previous Page</a> 
    </li> 

&

<li class="next-list-item"> 
     <a class="next page-numbers" href="http://domain.tld/page/2/">Next Page</a> 
    </li> 
+0

函數[paginate_links()](https://codex.wordpress.org/Function_Reference/paginate_links)沒有爲此提供過濾器掛鉤。查看[源代碼](https://core.trac.wordpress.org/browser/tags/4.5.3/src/wp-includes/general-template.php#L0)3156行,它包裝所有鏈接'

  • ' –

    回答

    4

    您可以將鏈接列表作爲數組返回,而不是直接輸出函數。然後,您可以使用各自的功能定位下一個和上一個鏈接。

    $links = paginate_links(array(
        'prev_next'   => false, 
        'type'    => 'array' 
    )); 
    
    if ($links) : 
    
        echo '<ul class="page-numbers">'; 
    
        // get_previous_posts_link will return a string or void if no link is set. 
        if ($prev_posts_link = get_previous_posts_link(__('Previous Page'))) : 
         echo '<li class="prev-list-item">'; 
         echo $prev_posts_link; 
         echo '</li>'; 
        endif; 
    
        echo '<li>'; 
        echo join('</li><li>', $links); 
        echo '</li>'; 
    
        // get_next_posts_link will return a string or void if no link is set. 
        if ($next_posts_link = get_next_posts_link(__('Next Page'))) : 
         echo '<li class="next-list-item">'; 
         echo $next_posts_link; 
         echo '</li>'; 
        endif; 
        echo '</ul>'; 
    endif; 
    
    +0

    這個解決方案就像一個魅力。非常感謝你。 – dash

    0

    以下是JavaScript(jQuery的)解決方案。不是很好,但它的工作原理:

    (function ($) { 
     
        
     
        $('ul.page-numbers li a').each(function() { 
     
        var $this = $(this); 
     
        if ($this.hasClass('prev')) $this.parent('li').addClass('prev-list-item'); 
     
        if ($this.hasClass('next')) $this.parent('li').addClass('next-list-item');  
     
        }); 
     
        
     
    }(jQuery));
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
     
    <ul class="page-numbers"> 
     
        <li> 
     
         <span class="page-numbers current">1</span> 
     
        </li> 
     
        <li> 
     
         <a class="page-numbers" href="https://domain.tld/page/2/">2</a> 
     
        </li> 
     
        … 
     
        <li> 
     
         <a class="page-numbers" href="https://domain.tld/page/10/">10</a> 
     
        </li> 
     
        <li> 
     
         <a class="next page-numbers" href="https://domain.tld/page/2/">Next Page</a> 
     
        </li> 
     
    </ul>

    只是包裝的JavaScript代碼<script></script>標籤和paginate_links()功能後,附近的插入。

    +0

    由於我儘量避免使用JavaScript並且沒有實現jQuery,所以此解決方案不能滿足我的需求。無論如何感謝您的回覆。 – dash

    +0

    您可以嘗試'type:'array'' - 返回分頁鏈接列表的數組以提供對顯示的完全控制。 (哎呀,這個解決方案用在接受的答案中,沒有看到) –

    相關問題