Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP语法有助于在字符串中连接函数_Php_Wordpress_Syntax - Fatal编程技术网

PHP语法有助于在字符串中连接函数

PHP语法有助于在字符串中连接函数,php,wordpress,syntax,Php,Wordpress,Syntax,我在wordpress中使用一个主题,它有一个自定义功能来构建日历页面。这使我能够创建一个页面,其中包含介绍性文本,然后是下面的事件列表 列表允许用户查看“上一个月”或“下一个月”事件,但这样做会导致介绍性文本消失,尽管URL没有更改 我在主题文件中找到了该函数,并尝试按如下方式编辑它: if($action_identifier == 'get_cal'){ $monthdata = explode('/', $thedata); $month = $monthdata[0

我在wordpress中使用一个主题,它有一个自定义功能来构建日历页面。这使我能够创建一个页面,其中包含介绍性文本,然后是下面的事件列表

列表允许用户查看“上一个月”或“下一个月”事件,但这样做会导致介绍性文本消失,尽管URL没有更改

我在主题文件中找到了该函数,并尝试按如下方式编辑它:

  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