最佳实践自定义函数,在哪里回显变量?

时间:2018-11-02 作者:RobbTe

我有一个自定义函数来查询一些帖子。我想知道是否可以在函数的循环中回显变量,因为通常我会在函数的末尾回显变量。如果是,如何在该变量中正确存储多个值?

请参见下面的示例代码:

<?php 
function get_some_posts($args) { 
        $query = new WP_Query( $args );

        if ( $query->have_posts() ) {

            while ( $query->have_posts() ) {

                $query->the_post();
                //Can i echo variables here?
                get_template_part( \'parts/content-item\', get_post_type() );

                //Or should i put it into a variable and if so how? Since the below is not working.
                $to_echo = get_template_part( \'parts/content-item\', get_post_type() );
            }

        }
        //And then echo it at the end of the function?
        echo $to_echo;
}
add_action(\'custom_hook\',\'get_some_posts\');

1 个回复
最合适的回答,由SO网友:butlerblog 整理而成

一般来说,是的。如果您的正常输出是在末尾回音,那么在循环过程中回音不会有太大变化。

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查询中获取结果并返回它的示例。因此,这是“过滤器”的作用(或可能的作用)的一个示例。如果这是一个行动,那就不同了。您要么在函数中回显它,要么将其放入声明为全局的变量中,并在以后的操作/过滤器中提取该全局。

结束

相关推荐

Organize functions.php

组织职能的最佳方式是什么。php的性能?我有几个add\\u操作调用、几个add\\u主题支持、几个add\\u过滤器和4个附加函数。对于面包屑、样式表、注册菜单和小部件。我们是否需要遵守订单?例如,首先是所有add\\u过滤器函数,然后是add theme\\u support等。不确定添加代码是否相关,因为这是一个一般性问题。如果需要,我很乐意更新这篇文章。