我正在创建自己的短代码函数,并且在调用短代码时起作用,并且我的页面查询返回结果-它从不使用任何设置,而是使用默认值,就像$ 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
答案 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/来详细了解带有参数的简码。
尝试使用: