WordPress 中的动态简码和函数

Ada*_*mat 2 wordpress shortcode

我在基于数据库条目自动生成短代码方面遇到了一些问题。

我能够得到正常的简码工作,即:

function route_sc5() {
        return "<div>Route 5</div>";
    }
    add_shortcode('route 5','route_sc');
Run Code Online (Sandbox Code Playgroud)

和以下激活它的短代码是[route 5]

这有效。但我需要的是为每个数据库条目生成的简码。就像是:

$routes = $wpdb->get_results( $wpdb->prepare("SELECT * FROM wp_routes") );
foreach($routes as $route)
{
    function route_sc$route->id () {
        return "<div>Route $route->id</div>";
    }
    add_shortcode('route $route->id','route_sc$route->id');
}
Run Code Online (Sandbox Code Playgroud)

上面只是我希望它如何工作的一个例子。不是字面上我正在使用的代码。我将如何实现这一目标?): 谢谢。

Ann*_*rom 6

以下是使用 PHP 5.3匿名函数的动态短代码回调的示例:

for( $i = 1; $i <= 5; $i++ ) { 
    $cb = function() use ($i) {
        return "<div>Route $i</div>";
    };  

    add_shortcode( "route $i", $cb );
}
Run Code Online (Sandbox Code Playgroud)

但我不得不问:你能使用短代码参数完成你需要做的事情吗?IE。[route num=3]。然后你就可以只有一个handle_route()函数和一个[route]短代码,这可能会简化事情。

另外,虽然从技术上讲,您可以在名称中包含带有空格的短代码,但我认为这会产生令人困惑的歧义。如果您决定每条路线都需要特定的短代码,我会推荐“route5”或“route-5”而不是“route 5”。