我可以添加一个‘显示所有页面’的链接到wp链接页面吗?

时间:2016-09-14 作者:gulliver

我使用wp_link_pages 为各个页面和帖子分页。

有没有一种方法可以添加一个额外的链接,将所有页面一起显示在一个页面上,而不是拆分?

1 个回复
最合适的回答,由SO网友:birgire 整理而成

下面是使用wp_link_pagescontent_pagination 过滤器:

其目的是在内容分页链接下方添加一个“显示所有内容”链接:

enter image description here

当我们单击它时,链接应该显示“显示内容分页”,反之亦然。

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, ...] );

相关推荐

Add wp-link-pages to post

我正在尝试添加wp-link-pages 功能到我的帖子中,我将图片拆分为多个页面。我已经有了next和prev按钮,其功能是用javascript编写的。如果我想从图1跳到图14,我觉得很难。所以我不知道如何实现这个wordpress,因为我是一个傻瓜。下面是我用来将帖子图像拆分为多个页面的代码。<?php global $post; if (has_post_thumbnail( $