在 div PHP 之外返回的简码函数
Shortcode function returning outside of div PHP
我在 Wordpress 中为自定义菜单创建了一个简码。
问题是我的 $menu 显示在侧边导航和侧边导航菜单 div 的上方和外侧。
我试过 echoing/returning 没有将它存储在 $var 中,我遇到了同样的问题。
我是不是漏掉了什么?
function custom_menu() {
$menu = wp_nav_menu( array( 'theme_location' => 'product-menu' ) );
$var = '<div class="side-nav">
<div class="side-nav-menu product- nav">
<p>Products</p>' . $menu . '
</div></div>';
return $var;
}
add_shortcode("custom", "custom_menu");
好的,wp_nav_menu()
默认回显,所以要将它存储在一个变量中,您可以像使用常规小部件一样 - 输出缓冲:
function custom_menu() {
ob_start();
wp_nav_menu( array( 'theme_location' => 'product-menu' ) );
$menu = ob_get_contents();
ob_end_clean();
$var = '<div class="side-nav">
<div class="side-nav-menu product- nav">
<p>Products</p>' . $menu . '
</div></div>';
return $var;
}
add_shortcode("custom", "custom_menu");
这应该有效。
你正在做的是用ob_start();
启动输出缓冲区,然后你在里面回显的所有东西都被捕获在缓冲区中,然后你在$menu
变量中输出缓冲区的内容,并且清理缓冲区。然后你就可以放心的使用$menu
这个变量了
wp_nav_menu()
将其输出回显到屏幕,这就是导致您的短代码出现问题的原因。如您所知,回显短代码中的任何内容都会产生意想不到的输出。 wp_nav_menu()
有一个名为 echo
的参数,默认设置为 true。您只需添加
'echo' => false,
到你的 wp_nav_menu
个参数数组,这应该可以解决你的问题
我在 Wordpress 中为自定义菜单创建了一个简码。
问题是我的 $menu 显示在侧边导航和侧边导航菜单 div 的上方和外侧。
我试过 echoing/returning 没有将它存储在 $var 中,我遇到了同样的问题。
我是不是漏掉了什么?
function custom_menu() {
$menu = wp_nav_menu( array( 'theme_location' => 'product-menu' ) );
$var = '<div class="side-nav">
<div class="side-nav-menu product- nav">
<p>Products</p>' . $menu . '
</div></div>';
return $var;
}
add_shortcode("custom", "custom_menu");
好的,wp_nav_menu()
默认回显,所以要将它存储在一个变量中,您可以像使用常规小部件一样 - 输出缓冲:
function custom_menu() {
ob_start();
wp_nav_menu( array( 'theme_location' => 'product-menu' ) );
$menu = ob_get_contents();
ob_end_clean();
$var = '<div class="side-nav">
<div class="side-nav-menu product- nav">
<p>Products</p>' . $menu . '
</div></div>';
return $var;
}
add_shortcode("custom", "custom_menu");
这应该有效。
你正在做的是用ob_start();
启动输出缓冲区,然后你在里面回显的所有东西都被捕获在缓冲区中,然后你在$menu
变量中输出缓冲区的内容,并且清理缓冲区。然后你就可以放心的使用$menu
这个变量了
wp_nav_menu()
将其输出回显到屏幕,这就是导致您的短代码出现问题的原因。如您所知,回显短代码中的任何内容都会产生意想不到的输出。 wp_nav_menu()
有一个名为 echo
的参数,默认设置为 true。您只需添加
'echo' => false,
到你的 wp_nav_menu
个参数数组,这应该可以解决你的问题