2012-09-28 35 views
0

我想「喜歡」按鈕添加自定義的WordPress站點。如何定製MySQL的列數據添加到WordPress的循環

我在名爲「post_likes」的「wp_posts」表中添加了一個額外的列。

我在苦苦掙扎的是,如果有什麼方法可以將這些數據作爲標準WordPress循環的一部分輸出?

我的代碼從數據庫中檢索信息:

function get_articles() { 
    $articles = array(); 

    $query = mysql_query("SELECT `ID`, `post_title`, `post_likes` FROM `wp_posts`"); 
    while (($row = mysql_fetch_assoc($query)) !== false) { 
    $articles[] = array(
     'ID' => $row['ID'], 
     'post_title' => $row['post_title'], 
     'post_likes' => $row['post_likes'] 
    ); 

    } 

    return $articles; 
} 

當前的代碼輸出這樣的:

<?php 
$articles= get_articles(); 
foreach ($articles as $article) { echo '<p><a href="#">Like</a> <span>', $article['post_likes'], '</span> Like this</p>'; } 
?> 

但我需要知道是否有天曉得添加此作爲循環的一部分,所以我可以使用縮略圖圖像,按類別過濾等。

回答

1

好的,這在很多方面都是錯誤的。 永不改變WP表
post_likes應該是post_meta(檢查add_post_meta

數據庫連接應$wpdb

完成並顯示職位應在Loop來完成,並不需要一個數據庫連接來做到這一點。
中,你可以使用get_post_meta來獲取你的post_likes
like_post +1他們update_post_meta

如果你需要改變的循環利用WP_Query

爲什麼你不應該改變的WordPress表

  1. 所有另類「列」你需要的文章(和用戶)應存放在那裏*_meta表。看看這些表格,你應該能夠理解它是如何工作的。
  2. 這種方式可以使用所有* _post_meta來添加/編輯/更新/刪除這些數據。無需額外的代碼功能(並DB調用)自己
  3. 如果你沒有與功能提出自己的欄目,緩存插件不會優化性能獲取的部分。
  4. 如果WP更新在數據庫上做了某些事情,它可能會刪除您的數據
  5. 爲什麼在您使用自己的流量時使用Wordpress並在WordPress中使用hack/change。
+0

好的謝謝你的回覆。所以基本上我只需要在每次有人「喜歡」一篇文章時增加帖子元。出於好奇,爲什麼添加到WP表中(顯然不是刪除/重命名)是錯誤的。 – vonholmes

+0

查看我的更新。你是一個初學者編碼器,對嗎? – janw

+0

是的,我非常喜歡初學者。我會嘗試使用post_meta建議的根目錄。感謝您花時間提供這樣的信息回覆,這是一個很大的幫助! – vonholmes