短码中的SQL查询不起作用

时间:2014-11-13 作者:John Denney

我有一张定制的桌子\'wp-products\' 在WordPress中包含以下字段

id (primary key)  e.g 1
make              e.g. ford
model             e.g. mustang
price             e.g. 17500.00

id (primary key)  e.g 2
make              e.g. dodge
model             e.g. pheonix
price             e.g. 77500.00
我想做的是创建一个短代码,例如。[product_price id=2] 返回与此表中id号2关联的价格值,例如。77500.00. 我尝试了几种方法,最后得到了这个(下面)我把这个代码放进去了functions.php

function product_price_func( $atts ) {
    global $wpdb;
    $output = \'\';
    $product_id = \'\';

    $atts = shortcode_atts(
    array(
      \'id\' => \'no id found\',
    ), $atts, \'product_price\' );

    $product_id = $atts[\'id\'];


    $product_price = $wpdb->get_results("SELECT price FROM wp-products WHERE id={$product_id}", ARRAY_A);

    foreach ( $product_price as $the_price ) 
    {   
      $output = $the_price->price;
    }
    return "Product Price: $" . $output;
}
add_shortcode( \'product_price\', \'product_price_func\' );
但是,这将返回一个空结果。我已经检查过了id 正确,但无法获取查询以返回与id=2.

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

我已经解决了这个问题,下面是我为让它工作所做的步骤

在wordpress数据库中创建了一个自定义表(称为wp products)。此表包含以下字段:id、make、model、price。创建了一个快捷码来检索价格。Shortcode类似于[product\\u price id=2],其中id=2是表中项目2的价格值

  • 修改了我的原始代码,添加了$table\\u name=$wpdb->前缀。”“产品”
  • 将查询更改为:$product\\u price=$wpdb->get\\u results(“从“..$table\\u name.”中选择价格,其中id={$product\\u id}”,ARRAY\\u A)
      1. 在我想要显示代码的页面位置添加了短代码
      这是有效的代码,我希望它能有所帮助


      function product_price_func( $atts ) {
          global $wpdb;

      $table_name = $wpdb->prefix . \'products\';
      
      $atts = shortcode_atts(
      array(
        \'id\' => \'no id found\',
      ), $atts, \'product_price\' );
      
      $product_id = $atts[\'id\'];
      
      $product_price = $wpdb->get_results("SELECT price FROM " . $table_name ." WHERE id={$product_id}", ARRAY_A);
      
      foreach ( $product_price as $the_price ) 
        { 
          $output = $the_price[\'price\'];
        }
      
      return "Product Price: $" . $output;
      

      } add_shortcode( \'product_price\', \'product_price_func\' );


    结束

    相关推荐

    OOP and WordPress shortcode

    我试图通过这种方式添加一个短代码class MyPlugin { function __construct() { $this->make_shortcode(); } function ShowMsg($cls, $lst4) { $data = shortcode_atts(array(\'phn\' => \'\', \'msg\' => \'\'), $atts);