关于wordpress某些主题使用WP-PageNavi插件无效的问题

之前在我的博客上安装了 WP-PageNavi 这个插件,来实现分页效果,结果却发现完全不起作用,后来才知道是某些主题不能识别 WP-PageNavi 的原因。

可以识别的主题可以做到在我们安装了 WP-PageNavi 插件之后,就会在 index.php 或者是 function.php 文件中插入一条对应的插件代码。不识别的就不能够自动添加,那么要实现分页效果,只有我们自己手动添加了。

以我当前的主题 Twenty Twelve 为例,其原控制分页的函数为 function.php 中的 twentytwelve_content_nav 函数,原函数:

function twentytwelve_content_nav( $html_id ) {
    global $wp_query;

    if ( $wp_query->max_num_pages > 1 ) : ?>
        <nav id="<?php echo esc_attr( $html_id ); ?>" class="navigation" role="navigation">
            <h3 class="assistive-text"><?php _e( 'Post navigation', 'twentytwelve' ); ?></h3>
            <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">←</span> Older posts', 'twentytwelve' ) ); ?></div>
            <div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">→</span>', 'twentytwelve' ) ); ?></div>
        </nav><!-- .navigation -->
    <?php endif;
}

下面就将分页的代码插入到该函数中,使用条件判断 if( function_exists( 'wp_pagenavi' ) ) 如果插件未激活,则会阻止错误消息,并提供主题的默认分页作为后备。

function twentytwelve_content_nav( $html_id ) {
    global $wp_query;

    if ( $wp_query->max_num_pages > 1 ) : ?>
        <nav id="<?php echo esc_attr( $html_id ); ?>" class="navigation" role="navigation">
            <h3 class="assistive-text"><?php _e( 'Post navigation', 'twentytwelve' ); ?></h3>
            <?php if( function_exists( 'wp_pagenavi' ) ) { wp_pagenavi(); } else { ?>
                        <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">←</span> Older posts', 'twentytwelve' ) ); ?></div>
                        <div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">→</span>', 'twentytwelve' ) ); ?></div>
                    <?php } ?>
        </nav><!-- .navigation -->
    <?php endif;
}

现在,分页功能就正常了!

如果您觉得本文对您有用,欢迎捐赠或留言~
微信支付
支付宝

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注