我在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;
}
我在这里尝试的是创建&#39;介绍&#39; div然后使用wordpress函数&#39; get_content&#39;在div中显示页面内容。
这种半成品的作用是它引入了&#39;介绍&#39; div我想要它,但不显示内容(当我输入内容而不是&#39; the_content()&#39;时它会显示文本。我认为这可能是一个语法问题,因为我是一个完全新手 - 有人能给我任何建议吗?
提前致谢。
答案 0 :(得分:2)
the_content()
打印内容。使用get_the_content()
$content .= get_the_content(); /* lines */
答案 1 :(得分:0)
Wordpress在这些事情上很奇怪;它将echo
来自函数内部的内容,因此字符串连接通常是不可能的。 大多数的函数也有一个以get_
开头的对应项。这也是the_content
功能的情况,因此用$content .= get_the_content();
替换您的来电可以解决您的问题。
那就是说,作为我原来答案的延伸;如果你遇到一个没有get_
替代的函数,你可能想使用输出缓冲来确保函数不输出所有内容:
<?php
function the_content( ) {
echo "Foo";
}
ob_start( );
the_content( );
$content = ob_get_clean( );
doSomethingWith( $content ); // $content is now "Foo".
答案 2 :(得分:0)
使用输出缓冲区。
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;
}
答案 3 :(得分:0)
听起来$ post对象超出了该函数的范围。如果是,则必须将该对象传递给该函数,或者传递一个ID,然后从中获取post对象,或者全局化$ post。如果它在该函数的范围内,请尝试使用
$post->post_content
另一件事是日历可能正在使用AJAX。如果是这种情况,那么你无法全球化$ post。你必须传递ID和$ post oject。