shortcode_atts不解析自定义值,而是加载默认值

时间:2019-07-10 10:36:45

标签: wordpress shortcode

我正在创建自己的短代码函数,并且在调用短代码时起作用,并且我的页面查询返回结果-它从不使用任何设置,而是使用默认值,就像$ att为空。


    function test_shortcode( $atts ) {
       $filter = shortcode_atts(
            array(
                'type' => 'major',
                'sort' => 'name',
                'size' => 'large',
                'links' => 'yes',
            ),
            $atts,
            'customshortcode'
        );

      echo 'ATTS:';
      print_r($atts);

      echo'FILTER';
      print_r($filter);

    //code to query posts removed

    }

    add_shortcode( 'customshortcode', 'test_shortcode' );

然后我可以在帖子中添加..


    [customshortcode type:"other" size:"small" sort:"rand" links:"no"]

查看结果

ATTS
Array
(
    [0] => type:"other"
    [1] => size:"small"
    [2] => sort:"rand"
    [3] => links:"no"
)
FILTER
Array
(
    [type] => major
    [sort] => name
    [size] => large
    [links] => yes
)

,我可以看到函数中收到了$ atts值,但是$ filter没有更新。我希望两个数组在它们被打印出来的时候都是一样的。据我所知,我正在这里https://codex.wordpress.org/Function_Reference/shortcode_atts

1 个答案:

答案 0 :(得分:1)

您以错误的方式传递属性。

它应该使用#include <string> #include <string.h> #include <iostream> template <int n> std::string arrayToString(const char(&raw)[n]) { return std::string(raw, strnlen_s(raw, n)); } int main() { char buffer1[4] = { 't', 'e', 's', 't' }; char buffer2[5] = { 'o', 'n', 'e', '\0', '\0' }; std::string s1 = arrayToString(buffer1); std::string s2 = arrayToString(buffer2); std::cout << s1 << std::endl; // test std::cout << s2 << std::endl; // one return 0; } 而不是=

请通过https://developer.wordpress.org/plugins/shortcodes/shortcodes-with-parameters/来详细了解带有参数的简码。

尝试使用: