所以我在我的主文件中有这个代码。
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语句时它会返回它
谢谢, 卡尔
答案 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返回给主文件。但我建议不要使用这两个选项,除非你在应用程序中多次遇到完全相同的问题。