一般情況下我們是不需要在wordpress模板中調用sql語句了,但我有一些很不一樣的要求需要自己執行sql查詢得出結果了,下面我來介紹在wordpress中直接使用sql查詢.
首先我要使用這個類下面的一些方法,不能直接調用,WordPress提供了這個類的全局變量叫$wpdb,通過這個全局變量來與WordPress數據庫進行關聯,所以我們在使用之前,需要先定義下這個全局變量,寫法是:<?php global $wpdb; ?>
執行數據庫查詢:通過query函數在WordPress數據庫中執行任何SQL查詢,推薦使用SELECT查詢,代碼如下:<?php $wpdb->query('query'); ?>
刪除ID為13的文章,代碼如下:
$wpdb->query("DELETE FROM $wpdb->posts WHERE post_id = '13' ");
選擇一個變量:get_var函數返回一個來自數據庫的變量,雖然只返回一個變量,如果沒有查詢結果,返回NULL,代碼如下:
<?php $wpdb->get_var('query',column_offset,row_offset); ?>
query
(字符串)你希望執行的查詢,將該參數設為null會使函數返回上一個查詢緩存結果中的具體變量.
column_offset
(整數)預計的數據庫表的列數(0為表中第一列),默認值為0。
row_offset
(整數)預計的數據庫表的行數(0為表中第一行),默認值為0。
示例:檢索并返回用戶數量,代碼如下:
- <?php
- $user_count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $wpdb->users;"));
- echo '<p>用戶一共有 ' . $user_count . '人</p>';
- ?>
選擇表行:可使用get_row函數,該函數可將行作為對象、關聯數組或數值索引數組返回,如果查詢返回了多個行,函數只返回第一行.
代碼如下:<?php $wpdb->get_row('query', output_type, row_offset); ?>
query
(字符串)你希望執行的查詢語句。
output_type
三個預定義的常量之一。默認值為OBJECT。OBJECT —— 返回的結果以對象形式輸出,ARRAY_A ——返回的結果以關聯數組形式輸出,ARRAY_N —— 返回的結果以數值索引數組形式輸出
row_offset
(整數)預計的數據庫表的行數(0為表中第一行),默認值為0.
示例:獲取ID為10的鏈接的所有信息,代碼如下:
- <?php
- $mylink = $wpdb->get_row("SELECT * FROM $wpdb->links WHERE link_id = 10");
- //$mylink對象的屬性即SQL查詢結果的行名稱(即$wpdb->links表中的所有行)。
- echo $mylink->link_id; // prints "10"
- //使用ARRAY_A
- $mylink = $wpdb->get_row("SELECT * FROM $wpdb->links WHERE link_id = 10", ARRAY_A);
- //則會生成一個關聯數組:
- echo $mylink['link_id']; // prints "10"
- //使用ARRAY_N
- $mylink = $wpdb->get_row("SELECT * FROM $wpdb->links WHERE link_id = 10", ARRAY_N);
- //則會生成一個數值索引數組:
- echo $mylink[1]; // prints "10"
- ?>
選擇表列:要選擇數據庫表中的一列內容,可使用get_col函數,該函數輸出一個空間數組,如果查詢返回了多個列,代碼如下:
<?php $wpdb->get_col('query',column_offset); ?>
query
(字符串)你希望執行的查詢,將該參數設為null會使函數返回上一個查詢的緩存結果中的執行表列.
column_offset
(整數)預計的數據庫表的列數(0為表中第一列),默認值為0.
示例:返回指定文章類型的ID號,代碼如下:
- <?php
- $resaults = $wpdb->get_col("SELECT * FROM $wpdb->posts WHERE post_type = 'question'");
- print_r($resaults);
- ?>
選擇生成的結果:get_results可以從數據庫中抽取函數生成的多行結果。wpdb函數以數組形式返回整個查詢結果,代碼如下:
<?php $wpdb->get_results('query', output_type); ?>
query
(字符串)你希望執行的查詢語句,將該參數設為null會使函數返回上一個查詢的緩存結果中的信息.
output_type
三個預定義的常量之一,默認值為OBJECT。更多信息請見上文中的“選擇表行”,OBJECT —— 以對象形式輸出返回的結果,ARRAY_A ——以關聯數組形式輸出返回的結果,ARRAY_N —— 以數值索引數組形式輸出返回的結果
示例:返回指定文章類型的所有文章內容,代碼如下:
- <?php
- $resaults = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_type = 'question'");
- print_r($resaults);
- ?>
以上部分便是WordPress數據庫接口的查詢部分,通過上面提供的方法我們可以使用SQL語句來對數據庫內容進行查詢和獲取內容,不過需要大家對SQL這方面熟悉.
wordpress中常用sql語句
開啟所有評論,代碼如下:
- UPDATE wp_posts
- SET comment_status = ‘open’
- WHERE post_status = ‘publish’;
關閉舊文章的留言,代碼如下:
- UPDATE wp_posts
- SET comment_status = ‘closed’
- WHERE post_date < '2009-01-01' AND post_status = 'publish'
刪除所有的垃圾評論,代碼如下:
- DELETE FROM wp_comments
- WHERE comment_approved = ‘spam’
刪除所有文章修訂版本(Revisions)以及它們的Meta數據,代碼如下:
- DELETE a,b,c
- FROM wp_posts a
- LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
- LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
- WHERE a.post_type = ‘revision’
清理wp_postmeta表,代碼如下:
- DELETE FROM wp_postmeta WHERE meta_key = ‘_wp_old_slug’;
- DELETE FROM wp_postmeta WHERE meta_key = ‘_revision-control’;
- DELETE FROM wp_postmeta WHERE meta_value = ‘{{unknown}}’;
寫成shell腳本,添加表優化,可以使用crontab定時調用處理.
新聞熱點
疑難解答
圖片精選