如何使用wp_link_ages()只显示下一篇文章的分页链接

时间:2016-09-15 作者:Harman Preet

我试图只返回wordpress网站中的下一个帖子页面链接。这是我的实现

<?php
   wp_link_pages( array(
    \'next_or_number\' => \'next\',
    \'nextpagelink\' => \'next\',
    \'previouspagelink\' => false,
    \'before\' => \'<div class="page_links">\',
    \'after\'  => \'</div>\'
  ) );
?>
这段代码在主贴子页面(第1页)的输出

<div class="page_links">
  <a href="http://localhost/circorunning/?p=542&amp;page=2">next</a>
</div>
当它位于页面的第一个实例上时就可以了,但只要我单击“下一步”,我就会通过html获得这个输出。

<div class="page_links">
   <a href="http://localhost/circorunning/?p=542"></a> 
   <a href="http://localhost/circorunning/?p=542&amp;page=3">next</a>
</div>
现在我在第二个帖子页面上,你可以看到上面的输出,我有这个链接<a href="http://localhost/circorunning/?p=542"></a>我不想在任何页面上输出这个锚定标记。它不会显示在第一页上,但当你在第二页上时,它会一次又一次地显示,直到最后。

但我只想要一个链接,应该没有链接到主帖子。

我只想实现到帖子下一页的链接,当没有帖子页面时,它应该显示我在函数中设置的自定义链接。

<div class="page_links"> 
   <a href="http://localhost/circorunning/?p=542&amp;page=3">next</a>
</div>
我想在循环之外使用这个。

1 个回复
SO网友:birgire

下面是一个建议,使用wp_link_pages_link 筛选以删除以前的链接:

add_filter( \'wp_link_pages_link\', function( $link, $nextorprev )
{   
    return get_query_var( \'page\' ) > $nextorprev ? \'\' : $link;

}, 10, 2 );
我们还可以创建一个插件,删除空的上一个/下一个链接。

因此,如果我们有以下情况之一:

\'nextpagelink\' => \'\',
\'nextpagelink\' => false,
\'nextpagelink\' => null,

\'previouspagelink\' => \'\',
\'previouspagelink\' => false,
\'previouspagelink\' => null,
然后将删除这些链接。

以下是此类插件的框架:

<?php
/** 
 * Plugin Name: Remove Empty Next/Previous Content Pagination Links 
 * Plugin URI:  http://wordpress.stackexchange.com/a/239335/26350
 */

add_filter( \'wp_link_pages_args\', function( $args )
{
    if( empty( $args[\'previouspagelink\'] ) )
        add_filter( \'wp_link_pages_link\', \'wpse_remove_prev_links\', 10, 2 );

    if( empty( $args[\'nextpagelink\'] ) )
        add_filter( \'wp_link_pages_link\', \'wpse_remove_next_links\', 10, 2 );

    return $args;       
} );

add_filter( \'wp_link_pages\', function( $output, $args )
{
    if( empty( $args[\'previouspagelink\'] ) )
        remove_filter( \'wp_link_pages_link\', \'wpse_remove_prev_links\', 10, 2 );

    if( empty( $args[\'nextpagelink\'] ) )
        remove_filter( \'wp_link_pages_link\', \'wpse_remove_next_links\', 10, 2 );     

    return $output;
}, 10, 2 );

function wpse_remove_prev_links( $link, $nextorprev )
{
    return get_query_var( \'page\' ) > $nextorprev ? \'\' : $link;
}

function wpse_remove_next_links( $link, $nextorprev )
{
    return get_query_var( \'page\' ) < $nextorprev ? \'\' : $link;
}
如果省略“nextpagelink”或“previouspagelink”参数,这将不会覆盖默认设置。

以下是在最后一页添加自定义链接的方法:

add_filter( \'wp_link_pages_link\', function( $link, $nextorprev ) use ( &$numpages )
{   
    return get_query_var( \'page\' ) === $numpages ? \'CUSTOM LINK\' : $link;

}, 11, 2 );
我们的优先级比我们的插件晚。

相关推荐

Modifying WordPress plugins

关于对WordPress插件进行更改,我有一个非常简单的问题。我为我的问题的简单性道歉,因为我对使用开源代码和插件开发新手非常陌生。我发现了一个插件,它为我正在进行的一个项目提供了一个很好的解决方案。然而,为了更好地满足我的需要,我修改了代码。插件有一个;GPLv2或更高版本“;许可证,基于this 似乎是说对插件的修改很好,只要我注意到我所做的任何更改,并将插件发布在;GPLv2或更高版本“;许可证也是。由于我对插件所做的修改,我希望能够将其作为客户端工作的一部分提供给其他人。然而,我不确定前进的最佳方