【问题标题】:Hiding post pagination behind/after the read more link在阅读更多链接后面/之后隐藏帖子分页
【发布时间】:2016-06-25 06:09:33
【问题描述】:

我的博客中有一个帖子条目,分为 3 个部分。在条目前半部分的末尾显示了“Page 1 2 3”链接。最重要的是,我在第一段之后有一个“阅读更多”按钮链接(如果你在主页上,搜索结果,存档)用户必须先点击才能看到帖子的其余部分加上链接到帖子的 3 个部分。

现在我的问题是,如何隐藏“Page 1 2 3”并使其仅显示在单个帖子页面中,即点击“阅读更多”后他们将进入的页面?我不希望读者看到这些链接,只有当他点击阅读更多链接按钮时。我希望将分页链接隐藏在主页、存档页面、搜索结果中。

基本上只使帖子的分页链接在单个帖子中可见(post.php 可能是模板文件?)。我该怎么做?

我想隐藏帖子分页('Page 1 2 3'),但它似乎不起作用。或者可能是因为创世纪没有为每页分配类别?或者这可能是 add_filter 中的优先级问题?

我正在使用 WordPress 和 Genesis 框架。我使用的代码如下:

我用来使分页链接显示在网站上的代码,没有它,链接会被隐藏:

add_filter( 'the_content', function( $content ) {
return $content . custom_wp_link_pages( array( 'echo' => FALSE ) );
}, -1 ); // Lower number = higher priority.

WordPress中自定义分页链接的代码

function custom_wp_link_pages( $args = '' ) {
    $defaults = array(
        'before' => '<p align="center" id="post-pagination">' . __( 'Pages:' ), 
        'after' => '</p>',
        'text_before' => '',
        'text_after' => '',
        'next_or_number' => 'number', 
        'nextpagelink' => __( 'Next page' ),
        'previouspagelink' => __( 'Previous page' ),
        'pagelink' => '%',
        'echo' => 1
    );

    $r = wp_parse_args( $args, $defaults );
    $r = apply_filters( 'wp_link_pages_args', $r );
    extract( $r, EXTR_SKIP );

    global $page, $numpages, $multipage, $more, $pagenow;

    $output = '';
    if ( $multipage ) {
        if ( 'number' == $next_or_number ) {
            $output .= $before;
            for ( $i = 1; $i < ( $numpages + 1 ); $i = $i + 1 ) {
                $j = str_replace( '%', $i, $pagelink );
                $output .= ' ';
                if ( $i != $page || ( ( ! $more ) && ( $page == 1 ) ) )
                    $output .= _wp_link_page( $i );
                else
                    $output .= '<span class="current-post-page">';

                $output .= $text_before . $j . $text_after;
                if ( $i != $page || ( ( ! $more ) && ( $page == 1 ) ) )
                    $output .= '</a>';
                else
                    $output .= '</span>';
            }
            $output .= $after;
        } else {
            if ( $more ) {
                $output .= $before;
                $i = $page - 1;
                if ( $i && $more ) {
                    $output .= _wp_link_page( $i );
                    $output .= $text_before . $previouspagelink . $text_after . '</a>';
                }
                $i = $page + 1;
                if ( $i <= $numpages && $more ) {
                    $output .= _wp_link_page( $i );
                    $output .= $text_before . $nextpagelink . $text_after . '</a>';
                }
                $output .= $after;
            }
        }
    }

    if ( $echo )
        echo $output;

    return $output;
}

【问题讨论】:

  • 在过滤器函数中使用 is_single() 没有帮助?
  • 我没有想到这个解决方案,但是当我尝试它时......它只是完全隐藏了分页(来自存档、搜索结果和单页)。也许我做错了。我对 WordPress PHP 的理解还停留在新手级别,抱歉。
  • 发布您尝试过的代码。这样人们就可以继续帮助您。
  • 这里add_filter( 'the_content', 'custom_wp_link_pages', -1 ); function custom_wp_link_pages( $content ) { if ( is_single() ){ $content = . custom_wp_link_pages( array( 'echo' =&gt; FALSE )); } return $content; }
  • 应该是$content .= custom_wp_link_pages( array( 'echo' =&gt; FALSE ));,等号前有.。即使这样它也不起作用?

标签: php wordpress pagination


【解决方案1】:

我终于让它永远工作了!在我开始工作之前进行全面的试验和错误。这是我修改后的代码(请参阅原始问题中的“自定义分页链接代码”)。

我将自定义分页链接的代码放在is_single 中。然后第二个代码,较短的代码,我保持原样。

function custom_wp_link_pages( $args = '' ) {

if ( is_single() ) { // Start of is_single
$defaults = array(
    'before' => '<p align="center" id="post-pagination">' . __( 'Pages:' ), 
    'after' => '</p>',
    'text_before' => '',
    'text_after' => '',
    'next_or_number' => 'number', 
    'nextpagelink' => __( 'Next page' ),
    'previouspagelink' => __( 'Previous page' ),
    'pagelink' => '%',
    'echo' => 1
);

$r = wp_parse_args( $args, $defaults );
$r = apply_filters( 'wp_link_pages_args', $r );
extract( $r, EXTR_SKIP );

global $page, $numpages, $multipage, $more, $pagenow;

$output = '';
if ( $multipage ) {
    if ( 'number' == $next_or_number ) {
        $output .= $before;
        for ( $i = 1; $i < ( $numpages + 1 ); $i = $i + 1 ) {
            $j = str_replace( '%', $i, $pagelink );
            $output .= ' ';
            if ( $i != $page || ( ( ! $more ) && ( $page == 1 ) ) )
                $output .= _wp_link_page( $i );
            else
                $output .= '<span class="current-post-page">';

            $output .= $text_before . $j . $text_after;
            if ( $i != $page || ( ( ! $more ) && ( $page == 1 ) ) )
                $output .= '</a>';
            else
                $output .= '</span>';
        }
        $output .= $after;
    } else {
        if ( $more ) {
            $output .= $before;
            $i = $page - 1;
            if ( $i && $more ) {
                $output .= _wp_link_page( $i );
                $output .= $text_before . $previouspagelink . $text_after . '</a>';
            }
            $i = $page + 1;
            if ( $i <= $numpages && $more ) {
                $output .= _wp_link_page( $i );
                $output .= $text_before . $nextpagelink . $text_after . '</a>';
            }
            $output .= $after;
        }
    }
}

if ( $echo )
    echo $output;

return $output;
}
} // Closing bracket of is_single

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 2013-03-12
    • 2013-04-17
    • 2017-09-10
    • 2020-02-23
    • 2016-07-16
    • 1970-01-01
    相关资源
    最近更新 更多