下面是使用wp_link_pages
和content_pagination
过滤器:
其目的是在内容分页链接下方添加一个“显示所有内容”链接:
当我们单击它时,链接应该显示“
显示内容分页”,反之亦然。Demo plugin
我们可以通过下面的演示来实现这一点,其中我们介绍wpse_show_all_content
获取变量:add_filter( \'wp_link_pages\', function( $output, $args )
{
// Validate user input
$show_all_content = (bool) filter_input(
INPUT_GET,
\'wpse_show_all_content\',
FILTER_VALIDATE_BOOLEAN
);
// Generate link
$link = add_query_arg(
\'wpse_show_all_content\',
! $show_all_content,
get_permalink()
);
// Generate link title
$title = $show_all_content
? \'Show Content Pagination\'
: \'Show All Content\';
// Append
$output .= sprintf(
\'<a href="%s">%s</a>\',
esc_url( $link ),
esc_html__( $title, \'mydomain\' )
);
return $output;
}, 10, 2 );
在以下情况下禁用内容分页wpse_show_all_content
是真的,我们可以使用(PHP 5.4+):add_filter( \'content_pagination\', function( $pages )
{
// Validate user input
$show_all_content = (bool) filter_input(
INPUT_GET,
\'wpse_show_all_content\',
FILTER_VALIDATE_BOOLEAN
);
// Disable content pagination
if( $show_all_content )
$pages = [ join( \'\', $pages ) ];
return $pages;
} );
希望您可以根据您的需要进一步调整此选项!Update
根据讨论,这里有一种只针对特定wp_link_pages()
实例:add_filter( \'wp_link_pages\', function( $output, $args )
{
// Nothing to do if \'wpse_show_all_link\' is missing or not a true boolean string
if(
! isset( $args[\'wpse_show_all_link\'] )
|| ! wp_validate_boolean( $args[\'wpse_show_all_link\'] )
)
return output;
// Validate user input
$show_all_content = (bool) filter_input(
INPUT_GET,
\'wpse_show_all_content\',
FILTER_VALIDATE_BOOLEAN
);
// Generate link
$link = add_query_arg(
\'wpse_show_all_content\',
! $show_all_content,
get_permalink()
);
// Generate link title
$title = $show_all_content
? \'Show Content Pagination\'
: \'Show All Content\';
// Append
$output .= sprintf(
\'<a href="%s">%s</a>\',
esc_url( $link ),
esc_html__( $title, \'mydomain\' )
);
return $output;
}, 10, 2 );
在这里我们引入了一种习俗wpse_show_all_link
属性,该属性可以接受如下值1, 0, \'1\', \'0\', \'yes\', \'no\', true, false, \'true\', \'false\'.
Usage:wp_link_pages( [\'wpse_show_all_link\' => true, ...] );