Shortcodes and a list of IDs?

时间:2013-02-18 作者:v3nt

我正在创建一个简单的shortcode函数,需要将ID列表指定为变量。

我查过法典,但我不确定这是怎么处理的。

短代码是:

[video_vote users="13027,13023,12583"]
在逗号上使用拆分或分解是循环它们的最佳方式,还是有特定于WordPress的方法?

function video_vote($atts) {  
    extract(shortcode_atts(array(
        \'users\' => \'no foo\'
    ), $atts));


    return $users; // works but need to loop through the IDs

    // register to vote
    // selected videos
} 

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

explode 将是您的最佳选择。WordPress有几个内置函数来处理函数参数数组(wp_parse_argsshortcode_atts 例如),但与拆分字符串和迭代结果无关。我并不完全清楚您想要实现什么,但假设您试图为每个用户获取视频,那么您可以这样做:

function video_vote($atts) {  
    extract(shortcode_atts(array(
        \'users\' => null
    ), $atts));


    $user_ids = explode(",", strval($users));

    $videos = array();
    foreach ($user_ids as $id) {
        $videos[] = get_video_vote_by_uid($id); // Assuming you have a function like this
    }

    return implode("\\n\\n", $videos);
}
此外,根据您的需要,您可以简单地将逗号分隔的用户id字符串发送给另一个函数。例如,许多内置WordPress函数wp_parse_args 将接受它作为users关键字的参数(如果可用)。在这种情况下,您只需让接收函数处理拆分/迭代即可。

当然,如果你写了一个函数get_video_vote_by_uid 例如,在我的示例中提到,您可以为其编写一个包装器get_video_vote_for_users 它将获取一个用户列表(最好是由wp_parse_args) 然后依次迭代用户并调用get_video_vote_for_users 并返回结果。一般来说,我觉得最好让您的短代码处理程序尽可能简单,如果不仅仅是因为有一天您可能需要在短代码之外使用相同的代码。

结束

相关推荐

Why posts array is empty?

我尝试获取没有自定义字段集的帖子,或者if set的值与给定的参数不同。这是我的代码: $args_included = array( \'numberposts\' => 1, \'post_type\' => \'post\', \'post_status\' => \'published\', \'meta_query\' => array(&#x