如何从不同的文件中正确调用函数?

时间:2018-03-14 09:14:18

标签: php wordpress

所以我在我的主文件中有这个代码。

require_once(plugin_dir_path(__FILE__) . 'load_functions.php');

add_shortcode( 'ccss-show-recipes', 'ccss_show_tag_recipes' );
function ccss_show_tag_recipes() {

global $post;
global $wp;

$html = '';

$url = home_url( $wp->request );
$path = parse_url($url, PHP_URL_PATH);
$pathFragments = explode('/', $path);
$currentPage = end($pathFragments);
// $html.= '<p>'.$currentPage.'</p>';

    if ($currentPage == 'recipes') {

      ccss_load_all_recipes();


    } elseif ( in_array( $currentPage ,["cleanse","combine","commence","commit","complete","consolidate"] ) ) {

        //load_phases();

    } elseif ( in_array( $currentPage ,["basic-marinades","basic-stock-recipes"] ) ) {

       // load_recipe_type();

    }

    return $html;

   // Restore original post data.
   wp_reset_postdata();

}

我在load_functions.php中有函数

function ccss_load_all_recipes() {
 //code here that wont return

$html .= '<p>test</p>'; //--> It wont display this
echo 'test'; //---> This will be displayed
}

当我调用 ccss_load_all_recipes()时出现问题,它不会返回任何内容,是否有任何关于我犯了什么错误的想法?但是当我尝试一个echo语句时它会返回它

谢谢, 卡尔

1 个答案:

答案 0 :(得分:2)

您的函数css_load_all_recipes()不知道变量$html。为了实现这一点,你应该将$ html变量传递给函数并在最后再次返回它。

// in your main file
$html = ccss_load_all_recipes($html);

// in load_functions.php
function ccss_load_all_recipes($html = '') {
    $html .= '<p>test</p>';
    return $html;
}

编辑:其他可能性包括:将$html声明为全局变量,或将$html作为参考传递,这样您就不必将更改后的html返回给主文件。但我建议不要使用这两个选项,除非你在应用程序中多次遇到完全相同的问题。