从一篇帖子的一个*页面*获取内容

时间:2012-01-01 作者:stackhouse

我可以使用什么函数获取帖子中单个页面的内容?比如说,我想把我的帖子分成5页——我怎么才能得到第3页的内容呢?

在抄本里找不到这个。。。

2 个回复
SO网友:Dave Romsey

这应该可以做到:

/**
 * For posts paginated using <!--nextpage-->, return a particular "page" of content.
 * This function uses code from WP\'s setup_postdata() function.
 * @param string $content the content to search for paginated page content.
 * @param int $page_number the index of the page to return the content for.
 */
function get_nextpage_content( $content, $page_number ) {
    if ( strpos( $content, \'<!--nextpage-->\' ) ) {
        $content = str_replace("\\n<!--nextpage-->\\n", \'<!--nextpage-->\', $content);
        $content = str_replace("\\n<!--nextpage-->", \'<!--nextpage-->\', $content);
        $content = str_replace("<!--nextpage-->\\n", \'<!--nextpage-->\', $content);
        $pages = explode(\'<!--nextpage-->\', $content);
        return ( isset ( $pages[$page_number - 1] ) ) ? $pages[$page_number - 1] : false;
    } else {
        return false;
    }
}
用法:

// Get the second page of content with a paginated post
echo apply_filters( \'the_content\', get_nextpage_content( $post->post_content, 2 ) );

SO网友:mikemick

您应该首先分解内容,然后对内容执行一些功能,以启用WordPress的“自动段落”格式和短代码。

$post_content = $wpdb->get_var("SELECT post_content FROM $wpdb->posts WHERE ID = {$post->ID} LIMIT 0,1");
$raw_pages = explode(\'<!--nextpage-->\', $post_content);
foreach($raw_pages as $raw_page){
    $pages[] = wpautop( do_shortcode( trim($main_content) ) );
}
现在,您可以像这样回显每个页面:

<?php echo $page[0]; // Page 1 ?>
您还可以稍微不同地实现此功能/概念。我喜欢将我的帖子分成两页,让我的文案能够创建主要内容和侧边栏内容。我基本上是将第二页分配给侧边栏。虽然您可以使用与上面相同的代码,但一种更简洁(但灵活性较低)的方法可能是这样做。。。

$post_content = $wpdb->get_var("SELECT post_content FROM $wpdb->posts WHERE ID = {$post->ID} LIMIT 0,1");
list($main_content, $sidebar_content) = explode(\'<!--nextpage-->\', $post_content);
$main_content = wpautop( do_shortcode( trim($main_content) ) );
$sidebar_content = wpautop( do_shortcode( trim($sidebar_content ) ) );
现在我可以重复$main_content$sidebar_content 在页面模板中的任何位置都可以使用变量。

结束

相关推荐

使用PRE_GET_POSTS筛选器在所有元值上搜索多个字符串

使用pre\\u get\\u posts筛选器在所有meta\\u值上搜索给定字符串:$query->set(\'meta_value\', \'first string\'); 调试:AND ( (CAST(wp_postmeta.meta_value AS CHAR) = \'first string\') ) 工作正常:)但如何在所有meta\\u值上搜索字符串数组?例如我需要这样的东西:$query->set(\'meta_value\', array(\'fir