当涉及到属性时,代码没有任何问题(除了$attts
和$atts
使代码比需要的更难阅读)。
我将您的代码简化为以下测试用例:
function display($atts){
ob_start();
$attts = shortcode_atts( array(
\'id\' => \'2\',
), $atts, \'Adds\' );
echo $attts[\'id\'];
return ob_get_clean();
}
add_shortcode( \'Adds\', \'display\' );
当我将短代码添加到页面时,正确的id属性得到了响应。
这意味着您的数据中必须存在问题。任何一个$display[\'id\']
或$display[\'upload_image\']
不是你所期望的,或者$ad_display
不是。
如果看不到您的实际数据,就不可能比这更精确。因此,要回答您的问题“如何在同一页上使用具有不同属性值的相同短代码”,答案是您可以这样做,并且您的代码编写正确。您的问题特定于您的数据。
其他一些与问题无关的提示:
display()
对于函数来说,它的名称过于泛化。使用特定于项目的内容作为前缀或名称空间,以避免冲突这是“广告”,不是“添加”为什么不直接查询您要查找的特定ID,而不是查询每个短代码的所有数据,然后循环查找匹配项