将每个菜单项迭代为一个快捷代码

时间:2015-05-20 作者:Exploit

由于我不能轻松地在菜单中使用短代码,有没有一种简单的方法可以通过短代码遍历所有菜单标签?

例如,假设我创建了一些带有home、aboutus、contact标签的自定义链接菜单,我想获取这些标签并通过一个短代码发送,让菜单为每个菜单项使用短代码的输出。

1 个回复
SO网友:birgire

浏览核心文件时,有一些;可用脏路(未测试):

  • ! is_admin() && add_filter( \'wp_nav_menu_items\', \'do_shortcode\' );

  • ! is_admin() && add_filter( \'the_title\', \'do_shortcode\' );

  • ! is_admin() && add_filter( \'walker_nav_menu_start_el\', \'do_shortcode\' );

但我宁愿直接针对菜单标签,例如(未测试):

/**
 * Support shortcodes in the menu labels
 */
! is_admin() && add_action( \'nav_menu_link_attributes\', \'wpse_shortcode_in_menu\' );

function wpse_shortcode_in_menu( $atts )
{
    add_filter( \'the_title\', \'wpse_do_shortcode\' );
    return $atts;
}

function wpse_do_shortcode( $content )
{
    remove_filter( current_filter(), __FUNCTION__ );
    return do_shortcode( $content );
}

结束

相关推荐

Apply_Filters(‘the_content’,$Content)与DO_ShortCode($Content)

假设我有一个主题选项或自定义的postmeta文本区域。现在我想执行多个短代码、一般文本、图像等。最佳实践是什么?为什么?选项1:$content = //my text area data; echo apply_filters(\'the_content\', $content); 选项2:$content = //my text area data; echo do_shortcode($content); 请告诉我哪一个是最佳实践,以及为什么。EDIT让我详细描