php WordPress -在阅读更多内容之前显示页面内容,而不使用循环

tv6aics1  于 2023-10-15  发布在  PHP
关注(0)|答案(2)|浏览(118)

我知道这是个令人困惑的标题。听我解释
目前,我在我的WordPress主题中设置了这个小家伙:

<?php 
    $id=7; 
    $post = get_post($id); 
    $content = apply_filters('the_content', $post->post_content);
    echo $content;  
?>

它所做的是显示我选择的某个页面的内容。
效果很好!太棒了!太棒了!唯一的问题是,我想只显示阅读更多标签之前的内容,而不是所有内容。这就是我困惑的地方
我的研究(不断的谷歌搜索,咒骂和敲击我的键盘)使我明白,我可以在一个循环内实现这一点。但是,由于我只显示一个页面,似乎有点多余。
另外,我宁愿不使用_excerpt,因为这意味着最终用户以后将无法更改内容。
谢谢你的阅读,希望你能帮上忙!再见!

rvpgvaaj

rvpgvaaj1#

使用WordPress函数get_extended($post_content)检索<!--more-->标签之前的内容中的文本。
举例来说:

$id=7; 
$post = get_post($id); 
$content_arr = get_extended($post->post_content);
echo apply_filters('the_content', $content_arr['main']);
dohp0rv5

dohp0rv52#

通过研究get_extended()函数返回的数组,我发现:

*如果标签已经在文章中定义,则:

  • $content_arr['main']匹配<!--more-->标记之前的文本
  • $content_arr['extended']匹配<!--more-->标记之后的文本
    *否则
  • $content_arr['main']匹配文章的全文
  • $content_arr['extended']为空
  • 请注意:此行为与文档中报告的行为有很大不同。然而,在我的WordPress安装中,我已经验证了这种行为。无论设置>阅读>“对于提要中的每个帖子,包括”设置是否设置为全文或摘录 *,都会发生这种情况

因此,我建议的解决办法如下

$content_arr = get_extended( $post->post_content );
if( !empty($content_arr['extended']) )
{
    echo apply_filters( 'the_content', $content_arr['main'] );
}

相关问题