我是使用Wordpress进行编程和学习的新手。
the_title(); //outputs the title of the page
我想将页面标题捕获到字符串变量中,以便我可以使用strtolower
和str_replace
函数对其进行操作。
我使用它的唯一方法是使用输出缓冲。
ob_start();
the_title();
$result = ob_get_clean();
echo str_replace(" ","-",strtolower($result));
/*there has got to be an easier way....
i dont fully understand why */
str_replace(" ","-",strtolower(the_title()));
我做错了什么?
答案 0 :(得分:10)
如果你真正想要的是wp_title
函数,它所采用的第二个参数是一个布尔值,它是否应该显示它或返回它。将其传递为false,然后将其返回到var,然后您可以执行此操作:
$mytitle = wp_title(null, false);
否则,您唯一的选择是找到您要查找的功能并修改源代码。
答案 1 :(得分:3)
没有更简单的方法。你的函数不返回字符串,它打印它,因此如果你想捕获输出,你将不得不使用输出缓冲。
以下示例中f1()和f2()之间的区别。
// Returns a string, prints nothing.
function f1() {
return "String";
}
// Prints a string, returns nothing.
function f2() {
echo "String";
}
答案 2 :(得分:2)
Wordpress是一个 HORRIBLE 应用程序,用于学习如何编程。它使用“正常工作”的这些全局函数,但它们在“循环”内部执行非常具体的任务。正如我所说,这是一个好的代码应该是一个可怕的例子。
谢天谢地(为你)还有其他功能只返回你正在寻找的部分。你可以阅读a full listing here,而不仅仅是写下你需要的东西。请注意你记下哪些必须在神秘的循环中,你可以在任何地方使用。
碰巧有更多方法可以获得标题,但我真的想象这个例子你会做的事情如下:
$this_post = get_post($post); // I *think* $post is the post ID inside the loop though I could be wrong
echo $this_post->post_title;
但正如另一张海报(正确地)说你可以使用一个相当简单的wp_title()函数来获取当前的循环标题。
这让我想起要解释为什么从Wordpress学习编程是一个坏主意。他们有太多该死的方式做同样的事情,以至于几乎不可能掌握事情。
博客是一组非常简单的数据(在WP的情况下甚至更多,因为它没有完全规范化),而是只有一种方法来输出标题<?php echo $post->title; ?>
,你有无数的方法,都巧妙地做不同的事情。
如果你真的想学习如何编程(而不是乱搞你的WP内部的垃圾),创建一个简单的博客引擎是相当快速和有趣的......这当然是很多人进入一种新的语言或框架。
如果真的想要玩得开心,请看看Django。
足够的Wordpress咆哮。如果您将来有类似的事情没有100种方法,我真的不建议输出缓冲区捕获。它耗费了大量的资源,用于相对简单的事情。
最简单的方法就像获取原始函数的源代码一样简单,将其粘贴到新函数中并将echo
替换为return
。
请注意,可能有一些数据库连接要处理过早返回可能会中断...所以如果echo不是最后一个语句,而不是在那里返回,请将字符串存储为变量并在结束时返回功能。
答案 3 :(得分:1)
我想与你们分享我的最终解决方案。
这是为了在wordpress中为我的身体标签提供唯一的ID。* /
$title =wp_title(null,false);
echo strtolower(str_replace(' ','-',ltrim($title)));
//without the ltrim() 2 dashes are created before the title.
答案 4 :(得分:1)
Wordpress中几乎每个“the_*
”函数都有一个“get_the_*
”对应项。所以,你只需要使用
echo str_replace(" ","-",get_the_title());
它会像魅力一样发挥作用。还有get_the_excerpt()
,get_the_content()和the_permalink()以某种方式打破了命名惯例(上帝知道我写了多少次“get_the_permalink()
”并对它为什么不起作用感到沮丧)< / p>
干杯!