使用快捷代码返回值作为菜单项

时间:2019-11-11 作者:Daveh0

我在外观->菜单中创建了一个菜单。其中一项是在主题定制器中设置的公司电话号码。我有一个返回该数字的快捷码:

/* shortcode to display phone number  */
function getPhone()
{
    return get_theme_mod( \'contact_phone_data\');;
}

/* Add shortcode */
add_shortcode(\'contact_phone\', \'getPhone\');
有没有办法在外观->菜单UI中使用此选项?当我进入时[contact_phone] 在菜单项的“导航标签”字段中,它(如预期的那样)显示实际字符串,而不是执行短代码。

是否有方法指示该字段的值应作为快捷码执行?如果没有,是否有在WP中处理此类事情的标准方法?

1 个回复
SO网友:Damien Carbery

有人在高级WordPress facebook群中发布了类似的问题。我建议在菜单项的url中添加一些标记文本,然后在渲染期间将其替换掉。

add_filter( \'nav_menu_link_attributes\', \'dcwd_nav_menu_link_attributes\', 10, 4 ); 
function dcwd_nav_menu_link_attributes( $atts, $item, $args, $depth ) {
    // If PHONE_NUMBER is found then change it.
    if ( false !== strpos( $atts[ \'href\' ], \'PHONE_NUMBER\' ) ) {
        $atts[ \'href\' ] = getPhone();
    }
    return $atts;
}
我还将其发布到pastebin

相关推荐

如何从派生的进程中使用STRING_SHORTCODES()?

我有一个插件,它生成一个进程来执行打印功能。要打印的项目(在本例中为Woocommerce产品)通过URL传递(通过product_id). 在进行打印之前,必须从产品描述中删除所有注册的短代码。如果我打电话strip_shortcodes() 它什么都不做。我猜注册的短代码数组超出了范围?是否有人能提出一种有效的方法,使流程能够使用strip_shortcodes()?