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'' - 返回分页链接列表的数组以提供对显示的完全控制。 (哎呀,这个解决方案用在接受的答案中,没有看到) –

    相关问题