这是我在StackOverflow上的第一篇文章,感谢社区成为如此优秀的资源!
我在WordPress模板中有一些PHP代码,如下所示:
echo '<div class="thumbnail">'; echo the_post_thumbnail(); echo '</div>';
echo '<h2>'. the_title() .'</h2>';
echo '<h2>Testing echo</h2>';
echo '<div>'. the_excerpt() .'</div>';
正确解析第一行,the_post_thumbnail()
代码中包含<div>
个内容
第二行解析不正确,the_title()
标记前面有<h2>
,因此未解析为<h2>
标题。
正确解析第三行,作为<h2>
标题。
第四行再次被错误地解析,the_excerpt()
标记前面有<div>
个内容,因此未被解析为<div>
。
相关的查看源,为便于阅读而简化:
<div class="thumbnail"><img src="myimage.jpg"></div>
My title<h2></h2>
<h2>Testing echo</h2>
<p>My excerpt</p><div></div>
有问题的项目是使用jQuery的同位素砌体页面,基于Roots启动主题。 在谷歌搜索唯一可能的线索后,我发现它可能是某种[短码]问题? 抓住我的脑袋!
答案 0 :(得分:4)
the_title
和the_excerpt
不返回标题,它们直接将其回显到输出缓冲区。这就是标题出现在&lt; h2&gt;之前的原因。标签
您可以使用以下变体进行快速破解
echo '<h2>';the_title();echo '</h2>';
甚至更好
the_title("<h2>","</h2>") //directly. No echo required
答案 1 :(得分:2)
您的代码需要这两种方法:
要返回一个字符串,以便它可以回显。
然而,他们没有返回字符串,他们返回null或者可能是空字符串。他们所做的是直接回应内容。
要解决此问题,请执行以下操作:
echo '<div>';
the_excerpt();
echo '</div>;
答案 2 :(得分:1)
多数民众赞成正常! :)&#34; _&#34;前缀隐式意味着将自动为您完成回声,您应该使用get_the_title()
代替,当您想要控制通过更细粒度控制回应的内容时。
有关详细信息,请参阅此链接:Wordpress API
答案 3 :(得分:0)
看起来您想要控制标题格式。您可以通过过滤器OR ...
来实现这一点 $post->post_title
以上是直接访问帖子标题。这将返回一个字符串。
使用你的安全带:
<div class="thumbnail"><img src="myimage.jpg"></div>
My title<h2></h2>
<h2><?php echo $post->post_title; ?></h2>
<p>My excerpt</p><div></div>