将逗号分隔的短码属性传递给函数

时间:2013-07-29 作者:Dave Clements

我一直在尝试为Category Ajax Chain Selects 插件,以便我可以轻松地在所选的帖子/页面中显示链选择,但目前我只能将属性硬编码到短代码中:

function cross_ref_lookup_shortcode() {
    echo chainselect_getcategories( \'kla-competitor\', 2, array(\'Select Manufacturer\', \'Select Product\'), array(\'Manufacturer\', \'Product\'), \'Find comparable product\', \'\', 0 );
}

add_shortcode( \'cross_ref_lookup\', \'cross_ref_lookup_shortcode\' );
这很好,我可以在我想要的地方显示链选择,但我想创建一个短代码,在那里我可以添加变量作为短代码属性。

这个usage of the chainselect_getcategories function 如下所示:

<?php chainselect_getcategories( $tax, $level, $titles, $labels, $btn_text, $exclude, $count ) ?>
我已经做得够多了,除了标签和标题之外,所有的东西都工作了,因为它们需要一个数组。我不知道如何将一个shortcode属性作为数组传递给函数,以便按预期工作。在上面的硬编码示例中,数组可以工作,这就是我需要从shortcode属性重新创建的内容。以下是我所了解的:

function chain_select_shortcode( $atts ) {
    extract( shortcode_atts( array( \'tax\' => \'category\', \'level\' => 1, \'titles\' => array( \'Please select…\' ), \'labels\' => \'\', \'btn_text\' => \'Submit\', \'exclude\' => \'\', \'count\' => 1 ), $atts ) );

    return chainselect_getcategories( $tax, $level, explode( \',\', $titles ), explode( \',\', $labels ), $btn_text, $exclude, $count );
}

add_shortcode( \'ajax_chain_select\', \'chain_select_shortcode\' );
关于如何完成这项工作有什么想法吗?

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

$level 必须作为整数而不是字符串传递。

插件代码有问题:

if (count($labels) !== $level && $labels !== \'\') { 
    echo \'Category Chain Select Plugin</br>Error :: Number of labels don\\\'t match number of levels\';
The!== 运算符要求类型和值匹配。作者是否使用!= 的字符串值$level 将匹配。$标题的测试使用== 不检查类型。

    if (count($titles) == $level) {
您可能会向插件作者指出这种不一致性。

结束

相关推荐

Meta value Array

我希望有人能帮助我。我创建了一个自定义元框并尝试存储一个数组,但在使用update_post_meta, 它似乎没有将其存储为数组。我通过api获取信息,从文本区域到update_post_meta.我试过了serialize, unserialize, maybe_serialize, maybe_unserialize 等等,这是我的代码。$movieCast(array) array ( 0 => array ( \'actor\