2013-03-01 28 views
1

好的,所以當談到PHP時我有點新手,但這是我想要實現的。在預先存在的Wordpress插件中運行自定義SQL

我想從一個使用插件評估帖子(WP-評分)的主題改變爲內置評分的新主題。新主題將評分存儲爲元數據,並且我已經設法編寫一個查詢,它從wp_ratings表中獲取評分並將其轉換爲必要的元數據。我想要做的是將此查詢存儲在當前評分插件中,這樣任何時候評論文章都會存儲我們遷移到新主題時所需的元數據。就像我說過的,我是PHP的新手,但可以使用SQL來維護自己,所以有人請告訴我如何針對Wordpress數據庫運行以下查詢。

謝謝!

SET @post_id = 1110; 
SET SESSION group_concat_max_len = 1000000; 

insert into wp_postmeta (post_id,meta_key,meta_value) 
    SELECT 
    rating_postid 
    ,'like' 
    ,CONCAT 
     ('a:', COUNT(rating_id), ':{', 
     (SELECT CONCAT(GROUP_CONCAT(meta_data_vote SEPARATOR ''), '}') 
     FROM 
      (SELECT CONCAT 
      ('i:', 
      @curRow := @curRow + 1, 
      ';a:2:{s:7:"', 
      'user_id', 
      '";s:1:"0";s:2:"ip";s:16:"', 
      '-127-000-000-001', 
      '";}' 
      ) AS meta_data_vote 
      FROM wp_ratings JOIN 
      (SELECT @curRow := -1 AS j) r 
       WHERE rating_postid = @post_id 
       and rating_rating > 0 
      )AS meta_data_votes 
     ) 
    ) AS new_ratings_meta_data 
    FROM wp_ratings l 
    WHERE rating_postid = @post_id 
    and rating_rating > 0 

請注意,帖子ID變量應該等於一個的帖子ID被評爲,我相信這是WordPress的在PHP $ POST_ID。

+0

請詳細解釋你已經嘗試了什麼,以及錯誤是什麼。我已經格式化了你的SQL並且已經在這個過程中進行了傾斜:)現在我懷疑有一個備用),但我不得不休息一下,然後回來確定,哈哈 – 2013-03-01 17:16:43

回答

1

您想使用wpdb。這是PHP的mysql(是,mysql)函數的一個非常簡單的封裝。

$results = $wpdb->query($your_complicated query); // Congrats on actually knowing how to write SQL :) 

您可以將任何有效的SQL提供到該methaod,它應該像任何查詢一樣工作,但不能「堆棧」查詢。 mysqlPDO確實允許堆疊查詢(雖然我不是他們的粉絲,是偏執狂和所有人),但是,如上所述wpdb仍然使用mysql函數。

您還應該用$wpdb替代您的硬編碼WordPress表名。例如,而不是wp_posts使用$wpdb->posts。原因是wp_前綴是可變的。這是默認的,它很常見,但可以更改,並輕鬆更改。這只是一個簡單的編輯wp-config.php

相關問題