我需要一种方法来自动创建页面(使用<!--nextpage-->
) 在帖子中根据字数。
例如一篇包含1200个单词的帖子应该分成6页,每200个单词后面就有一个分页符。
我知道我可以手动操作。但WordPress支持的站点需要此功能,该站点将包含多种语言的导入数据档案。
尝试搜索一个插件来完成类似的任务。找不到它。
我需要一种方法来自动创建页面(使用<!--nextpage-->
) 在帖子中根据字数。
例如一篇包含1200个单词的帖子应该分成6页,每200个单词后面就有一个分页符。
我知道我可以手动操作。但WordPress支持的站点需要此功能,该站点将包含多种语言的导入数据档案。
尝试搜索一个插件来完成类似的任务。找不到它。
这很难通过编程实现,因为html中存在潜在的变化以及标记如何平衡。然而,如果你要尝试,我建议你这样做。
首先,WordPress在setup_postdata()
, 在the_post()
. 这意味着你需要得到这些<!--nextpage-->
结束前的立柱中的线条the_post()
. 这个\'loop_start\'
行动应该为这些目的而起作用。它甚至通过引用传递当前WP\\u查询对象的副本,因此您可以直接对查询的帖子进行更改!
这是一个开始:
add_action( \'loop_start\', \'wpse14677_loop_start\' );
function wpse14677_loop_start( $query ) {
foreach( $query->posts as $index => $post ) {
$words = preg_split( \'/ +/\', $post->post_content, PREG_SPLIT_NO_EMPTY );
$pages = array();
while ( $words ) {
$word_count = count ( $words );
if ( 200 >= $word_count ) {
$pages[] = implode( \' \', $words );
$words = array();
} else {
$pages[] = implode( \' \', array_slice( $words, 0, 200 ) );
$words = array_slice( $words, 200 );
}
}
$page_count = count( $pages );
if( 1 < $page_count ) {
$query->posts[ $index ]->post_content = implode( "\\n<!--nextpage-->\\n", $pages );
}
}
}
希望这能让你知道你需要做什么。我建议找到一些临时剥离html标记的方法,并在插入nextpage
标志,因为上面的函数还将计算HTML标记中的空格,甚至可以在其中放置分页符。谢谢你节省了我的时间。在将非wordpress站点迁移到wordpress时,我试图替换PAGEBREAK 在wordpress中,我使用了以下语法。
function make_pagebreak_nextpaglink( $query ) {
foreach( $query->posts as $index => $post ) {
$content = str_replace(\'__PAGEBREAK__\', \'<!--nextpage-->\', $post->post_content);
$query->posts[ $index ]->post_content = $content;
}
}
add_action(\'loop_start\', \'make_pagebreak_nextpaglink\');
Studio Hyperset的页面链接加上“自动分页”模块可以帮助您实现这一点。
它允许WordPress用户交换繁琐的在线标签,以获得一个站点范围的管理工具,该工具可以快速、统一地为帖子和页面分页。
该模块自动防止出现孤寡、尾随标题,避免拆分句子和单个单词,并可配置为覆盖或忽略现有的内嵌标记。
请在此处查看:http://pagelinksplus.com/wordpress-pagination-modules/wordpress-pagination-auto-pagination
我在寻找有关如何查询子页面的codex信息时遇到问题。似乎缺少可用参数的参考