我正在创建一个插件,通过自定义分类法加载自定义帖子(餐厅菜单插件)。。我正在通过“init”上的add\\u操作钩子调用main函数(保存所有内容),其中还有一个函数,它使用新的Wp\\u查询加载这些自定义帖子内容。
我向该函数添加了一个短代码,并将其放置在gutenberg小部件编辑器中。内容在餐厅主菜单页面上加载得非常完美,但我也可以在菜单页面的古腾堡编辑器中看到回声。。。。
我做错了什么?
function benito_generate_menu_posts() {
$args2 = array(
\'taxonomy\' => \'item_type\',
\'orderby\' => \'name\',
\'order\' => \'ASC\'
);
$types = get_categories($args2);
function load_post_with_tax($tax_type) {
$args = array(
\'post_type\' => \'menu\',
\'tax_query\' => array(
array(
\'taxonomy\' => \'item_type\',
\'field\' => \'term_id\',
\'terms\' => $tax_type,
)
)
);
$query1 = new WP_query ( $args );
while($query1->have_posts()) : $query1->the_post();
echo \'<div class="menu-thumb">\';
the_post_thumbnail( );
echo \'</div>\';
echo \'<div class="menu-title">\';
the_title( );
echo \'</div>\';
echo \'<div class="menu-content">\';
the_content( );
echo \'</div>\';
endwhile;
wp_reset_postdata(); // reset the query
}
foreach($types as $type) {
load_post_with_tax($type);
}
}
add_shortcode( \'get_menu_items\' , \'benito_generate_menu_posts\' );
最合适的回答,由SO网友:WebElaine 整理而成
正如Milo所注意到的,短代码应该return
内容而不是echo
正在删除它。所以改变
while($query1->have_posts()) : $query1->the_post();
echo \'<div class="menu-thumb">\';
the_post_thumbnail( );
echo \'</div>\';
echo \'<div class="menu-title">\';
the_title( );
echo \'</div>\';
echo \'<div class="menu-content">\';
the_content( );
echo \'</div>\';
endwhile;
至
while($query1->have_posts()) : $query1->the_post();
$div = \'<div class="menu-thumb">\';
$div .= get_the_post_thumbnail( );
$div .= \'</div>\';
$div .= \'<div class="menu-title">\';
$div .= get_the_title( );
$div .= \'</div>\';
$div .= \'<div class="menu-content">\';
$div .= get_the_content( );
$div .= \'</div>\';
return $div;
endwhile;
(更换
echo
具有
return
还有任何地方
the_something()
将其替换为
get_the_something()
所以在最后
return
是整个输出块。)