2017-08-14 36 views
-1

我試圖讓一個PHP代碼工作,以便在Wordpress數據庫表中進行數據庫查詢。結果(一個特定列的所有不同值)應放在HTML列表中。我希望能夠將輸出放到我的內容的任何位置,所以它應該可以通過簡碼進行訪問。WordPress數據庫查詢和輸出爲HTML列表

這是我到目前爲止。此代碼不會在wordpress或控制檯中產生任何錯誤,但它也不會執行任何操作......沒有任何內容出現在所需的位置。

class my_Shortcode { 

    var $echo; 

    function __construct() { 
     add_shortcode('my_plugin', array($this, 'shortcode')); 
    }  

    function shortcode($atts) { 
     global $wpdb; 

     $table = isset($atts['table']) ? $atts['table'] : false; 
     $column = isset($atts['column']) ? $atts['column'] : false; 
     $listDisplay = isset($atts['listDisplay']) ? $atts['listDisplay'] : false; 

     if ($listDisplay == true) { 
      if (false != $table && false != $column) { 
       $this->echo = ""; 
       $results = $wpdb->get_results(
        prepare('SELECT DISTINCT ' . $column . ' FROM ' . $table) 
       ); 
       $this->echo .= "<div class=\"list\"><ul>"; 

       foreach ($results as $result) { 
        $this->echo .= "<li>$result</li>\n"; 
       } 
       $this->echo .= "</ul></div>"; 
       return $this->echo; 
      } 
     } 
    } 
} 

我很高興有任何建議!

回答

1

你想這樣嗎?

<?php 
    echo do_shortcode("[my_plugin table='wp_posts' column=id]"); 
?> 





class my_Shortcode { 

    var $echo; 

    function __construct() { 
    add_shortcode('my_plugin', array($this, 'shortcode')); 
    }  

    function shortcode($atts) { 
    global $wpdb; 

    $table = isset($atts['table']) ? $atts['table'] : false; 
    $column = isset($atts['column']) ? $atts['column'] : false; 
    $listDisplay = isset($atts['listDisplay']) ? $atts['listDisplay'] : true; 

    if ($listDisplay == true) { 
     if (false != $table && false != $column) { 
     $this->echo = ""; 

     $results = $wpdb->get_results("SELECT DISTINCT $column FROM $table ",ARRAY_A); 


     $this->echo .= "<div class=\"list\"><ul>"; 

     foreach ($results as $key => $result) { 
      $keys = array_keys($result);     
      $this->echo .= '<li>'.$result[ $keys[0] ].'</li>\n'; 
     } 
     $this->echo .= "</ul></div>"; 
     return $this->echo; 
     } 
    } 
    } 
} 

$test = new my_Shortcode(); 
+0

這是錯過的技巧,非常感謝! – ImNotARobot

+0

歡迎您... – vel