PHP语法有助于在字符串中连接函数
我在wordpress中使用一个主题,它有一个自定义功能来构建日历页面。这使我能够创建一个页面,其中包含介绍性文本,然后是下面的事件列表 列表允许用户查看“上一个月”或“下一个月”事件,但这样做会导致介绍性文本消失,尽管URL没有更改 我在主题文件中找到了该函数,并尝试按如下方式编辑它:PHP语法有助于在字符串中连接函数,php,wordpress,syntax,Php,Wordpress,Syntax,我在wordpress中使用一个主题,它有一个自定义功能来构建日历页面。这使我能够创建一个页面,其中包含介绍性文本,然后是下面的事件列表 列表允许用户查看“上一个月”或“下一个月”事件,但这样做会导致介绍性文本消失,尽管URL没有更改 我在主题文件中找到了该函数,并尝试按如下方式编辑它: if($action_identifier == 'get_cal'){ $monthdata = explode('/', $thedata); $month = $monthdata[0
if($action_identifier == 'get_cal'){
$monthdata = explode('/', $thedata);
$month = $monthdata[0];
$year = $monthdata[1];
$content = '<div id="post" class="page">';
$content .='<div class="introduction">'; /* these */
$content .= the_content(); /* lines */
$content .='</div>'; /* added */
$content .= '<div class="calmonth clear darkbox">';
$content .= prevlink($month , $year);
$content .= '</div>';
$content .= '</div><div class="calentries">';
$content .= get_the_calendar($month,$year) . '</div>';
$output = $content;
}
if($action\u identifier=='get\u cal'){
$monthdata=explode(“/”,$thedata);
$month=$monthdata[0];
$year=$monthdata[1];
$content='';
$content.='';/*这些*/
$content.=_content();/*行*/
$content.='';/*已添加*/
$content.='';
$content.=prevlink($month,$year);
$content.='';
$content.='';
$content.=获取日历($month,$year)。“”;
$output=$content;
}
我在这里尝试的是创建“简介”div,然后使用wordpress函数“get_content”在div中显示页面内容
这个semi的工作原理是,它将“introduction”div放置在我想要的位置,但不显示内容(当我键入内容时,它将显示文本,而不是“the_content()”)。我认为这可能是一个语法问题,因为我是一个完全的新手——有人能给我一些建议吗
提前感谢。内容()打印内容。使用获取内容()
Wordpress在这些方面很奇怪;它将echo
函数内部的内容,因此字符串连接通常是不可能的。大多数函数也有一个以get\uuu
开头的对应函数。the_content
函数也是如此,因此将调用替换为$content.=get_the_content()代码>将解决您的问题
也就是说,作为我最初答案的延伸;如果您遇到的函数没有get_uu
选项,您可能需要使用输出缓冲来确保函数不会输出所有内容:
<?php
function the_content( ) {
echo "Foo";
}
ob_start( );
the_content( );
$content = ob_get_clean( );
doSomethingWith( $content ); // $content is now "Foo".
使用输出缓冲区
ob_start();
the_content();
$buffered_content = ob_get_clean();
if($action_identifier == 'get_cal'){
$monthdata = explode('/', $thedata);
$month = $monthdata[0];
$year = $monthdata[1];
$content = '<div id="post" class="page">';
$content .='<div class="introduction">'; /* these */
$content .= $buffered_content /* lines */
$content .='</div>'; /* added */
$content .= '<div class="calmonth clear darkbox">';
$content .= prevlink($month , $year);
$content .= '</div>';
$content .= '</div><div class="calentries">';
$content .= get_the_calendar($month,$year) . '</div>';
$output = $content;
}
ob_start();
_内容();
$buffered_content=ob_get_clean();
如果($action\u identifier=='get\u cal'){
$monthdata=explode(“/”,$thedata);
$month=$monthdata[0];
$year=$monthdata[1];
$content='';
$content.='';/*这些*/
$content.=$buffered_content/*行*/
$content.='';/*已添加*/
$content.='';
$content.=prevlink($month,$year);
$content.='';
$content.='';
$content.=获取日历($month,$year)。“”;
$output=$content;
}
听起来$post对象超出了该函数的范围。如果是,则必须将该对象传递给函数,或者传递一个ID,然后从该ID获取post对象,或者全球化$post。如果它在该函数的范围内,请尝试使用
$post->post_content
另一件事是日历可能正在使用AJAX。如果是这种情况,那么您就不能全球化$post。您必须通过并识别$post项目。您的内容()是否返回内容。。!在主页模板中,是的,但在本例中不是。如果在首次调用“获取内容”后在页面模板中调用此函数,是否会导致问题?请尝试添加var\u dump(获取内容())代码>并发布结果。谢谢-它返回'string(0)'“'这对您有什么意义吗?!是的,在日历显示在下面之前,它只是有一些介绍性的文字。我不得不添加到页面模板中以显示此文本,因为主题中的日历页面模板会忽略其他内容。我想这可能会产生问题..嘿,如果我尝试var_dump(the_content())代码>它返回NULL-所以它是说没有内容?@SamCampsall不使用_content(),而是使用get_the_content()!这就是答案的全部内容。感谢您的回复-但请看下文-我已经尝试过这个方法,但它无法完成任务。我不完全确定如何编写代码。我添加了ob_start();_内容();打开大括号后,然后将内容()更改为ob_get_clean()。这不起作用,但我不知道这是否是因为我编码错误…谢谢编辑-我已经按照你的建议尝试过了,但没有骰子:(我不知道下面的评论是否相关-看起来“内容”可能只是返回空的,尽管我不知道为什么..感谢您的帮助Hey Sam,如果Dogbert和我的解决方案都不起作用,我们可以肯定没有交付内容,并且内容中有错误。顺便说一句,内容不会返回。)不管怎么说,它都是这样写的。是的,这似乎是问题所在!对不起,浪费了大家的时间
$post->post_content