简而言之,我所需要的就是让我的WordPress做到这一点
$var = get_template_part( 'loop', 'index' );
但是,get_template_part()不返回HTML,而是打印它。我需要这个HTML存储在$var-你有任何想法如何做到这一点?
get_template_part()
$var
6jjcrrmo1#
这不是get_template_part的作用,get_template_part本质上表现得像PHP的require函数. Justin Tadlock writes a lot more about this here,并且还讨论了一个可能对您更有用的Wordpress函数-locate_template。或者,如果你确实想使用get_template_part来破解这个功能,你可以使用模板缓冲:
get_template_part
locate_template
function load_template_part($template_name, $part_name=null) { ob_start(); get_template_part($template_name, $part_name); $var = ob_get_contents(); ob_end_clean(); return $var; }
kxkpmulp2#
我不喜欢输出缓冲,虽然+1甚至认为这是一个选项!我认为Helga是对的,但你仍然需要尊重child_themes和主题路径,所以使用locate_template()代替(也是Simon建议的)。这工作得很好,甚至可以在过滤器或(在我的情况下)短代码函数中使用(我希望我的短代码在模板风格的文件中输出内容,以将显示层与逻辑层分开)。
locate_template()
return file_get_contents(locate_template("template-file-name.php")); // don't forget the .php!
aiqt4smr3#
关于什么的?
$file = file_get_contents(STYLESHEETPATH . '/template-part.php'); return $file;
我相信有更好的办法,但我觉得那更好。
gijlo24d4#
如果你的目标是创建一个带有HTML返回的短代码,下面的例子对我来说很有用:
function funcao_produtos_filtro_ead() { $html = ""; ob_start(); // LOOP DE PRODUTOS $args = array( 'post_type' => 'product', 'posts_per_page' => '-1' ); $loop = new WP_Query( $args ); if ( $loop->have_posts() ) { while ( $loop->have_posts() ) : $loop->the_post(); wc_get_template_part( 'content', 'product' ); endwhile; } wp_reset_postdata(); return '<div class="woocommerce">' . ob_get_clean() . '</div>'; } add_shortcode('produtos_filtro_ead', 'funcao_produtos_filtro_ead');
p1tboqfb5#
这对我很有效
ob_start(); get_template_part( 'loop', 'index' ); $var = ob_get_clean();
5条答案
按热度按时间6jjcrrmo1#
这不是
get_template_part
的作用,get_template_part本质上表现得像PHP的require函数. Justin Tadlock writes a lot more about this here,并且还讨论了一个可能对您更有用的Wordpress函数-locate_template
。或者,如果你确实想使用get_template_part来破解这个功能,你可以使用模板缓冲:
kxkpmulp2#
我不喜欢输出缓冲,虽然+1甚至认为这是一个选项!
我认为Helga是对的,但你仍然需要尊重child_themes和主题路径,所以使用
locate_template()
代替(也是Simon建议的)。这工作得很好,甚至可以在过滤器或(在我的情况下)短代码函数中使用(我希望我的短代码在模板风格的文件中输出内容,以将显示层与逻辑层分开)。
aiqt4smr3#
关于什么的?
我相信有更好的办法,但我觉得那更好。
gijlo24d4#
如果你的目标是创建一个带有HTML返回的短代码,下面的例子对我来说很有用:
p1tboqfb5#
这对我很有效