首先:Interesting Question!
第二:您需要添加<!--nextpage-->
在帖子中标记一次或多次。否则就不行了。
插件:
该插件的作用是拦截
get_permalink()
, 内部调用
wp_link_pages()
. 在…内
get_permalink()
, 我们得到了
get_post_permalink()
为自定义帖子类型返回的函数。在那里我们找到了
\'post_type_link\'
-过滤,这就是我们的切入点。
然后我们采取global $pages
, 其中包含由<!--nextpage-->
HTML注释。静态变量是一个计数器,它帮助我们根据调用函数的时间(从0
).
最后一件事是我们从$pages
到我们的帖子链接。作为esc_url()
函数截取我们的permalink,并会弄乱所有大写字母、空格等,我们在那里也附加了一个触发过滤器,只返回原始字符串。
<?php
/** Plugin Name: (#67750) »kaiser« Append excerpt to post pagination */
/**
* Callback for get_post_permalink() that is called by get_permalink() for
* custom post types. We append the $GLOBALS[\'pages\'][ $current ] excerpt here.
* @param string $post_link The original posts page link
* @param object $post The post object
* @param mixed boolean/string $leavename
* @param mixed boolean/string $sample A sample link
* @return string $post_link
*/
function wpse67750_pagination_excerpt( $post_link, $post, $leavename, $sample )
{
if (
\'YOUR_POST_TYPE\' !== get_post_type()
OR ! in_the_loop()
OR ! is_singular()
)
return;
static $n = 0;
// The global pages array: Contains the current post type pages
global $pages;
// We need a callback to reserve the original appended string
// not messed up by the esc_url() function.
add_filter( \'clean_url\', \'wpse67750_pagination_url_cb\', 10, 3 );
// The current page content
$curr = $pages[ $n++ ];
// Build the output
// Wrap it up for easy targeting via CSS and JS
// Also append a non visible single HTML tag to allow closing the still open anchor
$output = sprintf(
\'"> %s <span class="excerpt" id="page-%s">%s</span><a style="display:none" rel="nofollow" href="#\'
,$n
,$n
,trim( $curr )
);
/*$output = apply_filters(
\'the_excerpt\'
,$output
);*/
// Append to the link
return $post_link.$output;
}
add_filter( \'post_type_link\', \'wpse67750_pagination_excerpt\', 10, 4 );
/**
* The callback to preserve the string appended to the permalink
* @param string $url Escaped
* @param string $orig_url Not escaped
* @param string $context \'display\'
*/
function wpse67750_pagination_url_cb( $url, $orig_url, $context )
{
// Only run once
remove_filter( current_filter(), __FUNCTION__ );
// Return the non escaped original
return $orig_url;
}
解决方案并不完全完美。我还没有摆脱第一个数字,在某些情况下,检索最后一个链接似乎有点问题。它也有一个问题,那就是核心不提供摆脱附加
</a>
结束标记,所以我不得不在那里添加假链接。这些不会显示,不会被搜索引擎跟踪,也不会造成伤害。它们并不漂亮,但这是唯一的可能。