一般来说,是的。如果您的正常输出是在末尾回音,那么在循环过程中回音不会有太大变化。
function get_some_posts($args) {
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
the_title(); // the_title() is the same as echo get_the_title();
}
}
}
add_action(\'custom_hook\',\'get_some_posts\');
上述输出应与以下输出相同:
function get_some_posts($args) {
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
// declare your variable to avoid php output errors
$to_echo = \'\';
while ( $query->have_posts() ) {
$query->the_post();
$to_echo .= get_the_title(); // ".=" adds to the current value of the variable.
}
}
//And then echo it at the end of the function?
echo $to_echo;
}
add_action(\'custom_hook\',\'get_some_posts\');
当然,我是直接从你的问题代码开始工作的。这缺少一点上下文,您还需要在标题之间应用某种空格或换行符。
通过一个实际的例子,以及你关于循环中不重复它的问题,这里有一个可能的例子:
add_filter( \'the_content\', \'get_some_posts\' );
function get_some_posts( $content ) {
if ( is_single() ) {
$query = new WP_Query( array( \'post_type\' => \'page\' ) );
if ( $query->have_posts() ) {
// declare your variable to avoid php output errors
$to_echo = \'\';
while ( $query->have_posts() ) {
$query->the_post();
$to_echo .= get_the_title() . "<br />";
}
}
$content = $content . "<p>Checkout some pages:</p>" . $to_echo;
}
return $content;
}
这将把你的“理论”应用到WP的“the\\u content”过滤器中,该过滤器过滤主要内容区域。它首先检查我们是否在一篇文章上,如果是,则运行查询以获取页面。它将这些页面的标题放入一个列表中,向其中添加一些文本,然后在返回结果之前将其附加到$content变量(通过过滤器)。
就最终使用而言,这并不是一个“真实世界”的例子,因为我实际上没有包括链接——只有标题,而且它的数量也不受限制,因此可能会有大量荒谬的额外内容。这里仅作为您的问题“如何”从WP\\U查询中获取结果并返回它的示例。因此,这是“过滤器”的作用(或可能的作用)的一个示例。如果这是一个行动,那就不同了。您要么在函数中回显它,要么将其放入声明为全局的变量中,并在以后的操作/过滤器中提取该全局。