如何在带命名空间的unctions.php文件中定义和注册短码函数?

时间:2021-11-07 作者:Jacob Ford

我在我的主题中写了一个函数functions.php 我正在尝试注册add_shortcode()shown 在法典中:

<?php
/**
 * theme\'s functions.php
 */

namespace MyNamespace;

//[foobar]
function foobar_func( $atts ){
    return "foo and bar";
}
add_shortcode( \'foobar\', \'foobar_func\' );
然而,这不起作用,一篇包含[foobar] 简单呈现;[foobar]”;作为文本,而不是被处理函数的返回值替换。

我猜这和我的functions.php 正在命名。是否需要执行一些特殊操作来引用add_shortcode?

1 个回复
SO网友:Jacob Ford

Thanks to Stanislav Khromov (也处于活动状态on WPSE!), 我学会了在add_shortcode() 必须是完全限定的,即使它是在引用它的同一文件中定义的。

<?php
/**
 * theme\'s functions.php
 */

namespace MyNamespace;

//[foobar]
function foobar_func( $atts ){
    return "foo and bar";
}
add_shortcode( \'foobar\', \'\\MyNamespace\\foobar_func\' );
may omit 如果您愿意,请使用前面的反斜杠:add_shortcode( \'foobar\', \'MyNamespace\\foobar_func\' );

相关推荐

列出短码(DO_SHORTCODE)中的分类术语段

我想在我的短代码中列出分类术语。这是我获取术语列表的方式(用逗号分隔):<?php $terms = get_the_terms( $post->ID , array( \'shoptype\' ) ); $i = 1; foreach ( $terms as $term ) { $term_link = get_term_link( $ter