如何在同一页面上使用具有不同属性值的相同快捷码

时间:2018-03-16 作者:AmmuSha

我需要快捷代码属性方面的快速帮助

这是我的密码

 function display($atts){

    ob_start();
    global $wpdb;
    $tablename = $wpdb->prefix . "isi_ads_details";

    $attts = shortcode_atts( array(
        \'id\' => \'2\',
    ), $atts, \'Adds\' );

    $sql= "SELECT * FROM ".$tablename."";  
    $ad_display = $wpdb->get_results($sql, ARRAY_A);

    foreach($ad_display as $display){

        if($attts[\'id\'] == $display[\'id\']){
          echo \'<img src="\'.$display[\'upload_image\'].\'" alt="Image" />\';    
        }

    }

    return ob_get_clean();
}
短代码:

add_shortcode(\'Adds\', \'display\');
我需要的是,我想在同一页上显示这两个短代码结果。但它只显示一个结果id="2"

[Adds id="2"]
[Adds id="3"]

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

当涉及到属性时,代码没有任何问题(除了$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() 对于函数来说,它的名称过于泛化。使用特定于项目的内容作为前缀或名称空间,以避免冲突

结束

相关推荐

Primary menu shortcode name

我有一个快捷码,可以将菜单放在我想要的地方,但它只在主菜单上起作用。我不想对主菜单使用快捷键,我想创建一个名为shortcodemenu的新菜单,并在使用时让快捷键调用它。function print_menu_shortcode($atts, $content = null) { extract(shortcode_atts(array( \'name\' => null, \'class\' => null ), $atts)); return wp_nav_menu( a