快捷代码获取类别显示在网站顶部

时间:2017-08-06 作者:JoaMika

我试过使用ob_start 但“我的类别”查询仍显示在网站顶部及其容器外部的快捷代码中。你知道这里怎么了吗?

function life_shortcode(){

$args = array(\'title_li\' => \'\');
$mycats = wp_list_categories($args);

return \'<div class="conmenu"><a class="salit" href="/lifestyle/"><i class="x-icon-home" data-x-icon=""></i></a><ul>\' . $mycats . \'</ul></div>\';

}

add_action(\'wp_head\', function() {

  add_shortcode( \'lifemenu\', function() {
    ob_start();

    life_shortcode();

    return ob_get_clean();
  } );
}, 100 );

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

有几件事:

您正在运行add_shortcode() 中的函数wp_head. 你不需要那样做life_shortcode() 函数正在返回一个值,而不是回显它。所以它不会被输出缓冲区捕获ob_get_clean() 将不返回任何内容

  • wp_list_categories() 正在回响,因此无法正确地放入$mycats 无论何时使用快捷码,都会在页面顶部输出
  • 组织此代码的正确方法是:

    function life_shortcode() {
        $args = array(\'title_li\' => \'\', \'echo\' => false);
        $mycats = wp_list_categories($args);
    
        return \'<div class="conmenu"><a class="salit" href="/lifestyle/"><i class="x-icon-home" data-x-icon=""></i></a><ul>\' . $mycats . \'</ul></div>\';
    }
    add_shortcode( \'lifemenu\', \'life_shortcode\' );
    
    还请注意,我已将函数名直接传递给add_shortcode(), 而不是使用调用原始函数的匿名函数。这种方式使用更少的代码,并且在必要时更容易与其他插件集成。

    结束

    相关推荐

    尝试将动态内容调用为ShortCode属性

    我正在尝试向现有(第三方)短代码添加动态属性。短代码在同一页上出现多次。当我这样做时(在functions.php中),我可以得到第一个正确输出的短代码,但其他的则不行。function testOne(){ return do_shortcode(\'[abc type=\"contact\" orderby=\"menu_order\" order=\"asc\" style=\"list-post\" logic=\"and\" abc_tax_student=\"student1\