当我用<!--nextpage-->拆分一个很大的帖子时,搜索如何将用户定位到正确的页面?

时间:2011-10-24 作者:p.a.

我有一个很大的帖子<!-- nextpage -->. 第50页有一个术语。搜索术语时,我会在第#1页着陆。

Q: 系统如何自动将我转发到第50页?

谢谢

1 个回复
SO网友:kaiser

更新:在我自己需要这个之后,我彻底地修改了它。

目标我想每个get_permalink() 直接调用分页的帖子页面-没有任何例外。至少这是几乎所有其他需要链接到某处的函数所使用的函数,因此它也是最可靠的。

插件的作用是什么?当WP完全加载时,它会跳入,并向the_post-钩然后检查全局$numpages (保留帖子的页数)和$pages (保持立柱通过使用<!--nextpost--> 在内容中)。如果页数不大于1, 它中止。否则,它会在posts页面中搜索搜索到的字符串。如果找到了,则会设置$link 使用将属性初始化为页面链接_wp_link_page(). 然后,此链接连接到get_permalink().

它的作用是什么

它适用于帖子、页面和;自定义帖子类型

插件每次都是免费的。抓住它,使用它。玩得开心点。

<?php
/**
 * Plugin Name: (#31913) Search Results - direct link to page
 */

add_action( \'wp\', array( \'search_direct_page_links\', \'init\' ) );

class search_direct_page_links
{
    public static $instance;

    public static $s;

    public $link;

    public static function init()
    {
        is_null( self :: $instance ) AND self:: $instance = new self;
        return self :: $instance;
    }

    public function __construct()
    {
        if ( ! is_search() )
            return;

        is_null( self :: $s ) AND self :: $s = get_query_var( \'s\' );

        add_action( \'the_post\', array( $this, \'is_paged\' ) );
    }

    public function is_paged( $post )
    {
        global $numpages, $pages;

        // reset link:
        $this->link = get_permalink();

        // Remove filters attached from the last post
        foreach ( array( \'post_link\', \'page_link\', \'post_type_link\' ) as $filter )
        {
            remove_filter( $filter, array( $this, \'alter_link\' ) );
        }

        if ( 1 >= $numpages )
            return;

        $target = 1;
        foreach ( $pages as $i => $p )
        {
            if ( is_int( strpos( $p, self :: $s ) ) )
            {
                $target = absint( $i ) +1;

                // Get the link now, as _wp_link_page()
                // calls get_permalink() internally,
                // which would lead to an endless nested loop.
                $this->link = str_replace(
                     array( \'<a href="\', \'">\' )
                    ,\'\'
                    ,_wp_link_page( $target )
                );
            }
        }

        if ( 1 < $target )
        {
            add_filter( \'post_link\', array( $this, \'alter_link\' ), 10, 3 );
            add_filter( \'page_link\', array( $this, \'alter_link\' ), 10, 3 );
            add_filter( \'post_type_link\', array( $this, \'alter_link\' ), 10, 4 );
        }
    }

    public function alter_link( $permalink, $post, $leavename, $sample )
    {
        return $this->link;
    }
}

结束

相关推荐

Add column to pages table

嘿,我正在试图找到编辑中的部分。php页面,其中用我当前的所有页面填充表。我想做的是在表中添加另一个列,以便启动用于更改图片的侧页。有人能告诉我填充表的代码吗?谢谢大卫