如何将自定义mysql列数据添加到WordPress循环

时间:2012-09-28 11:19:53

标签: php mysql wordpress

我正在尝试向WordPress网站添加自定义“赞”按钮。

我在“wp_posts”表中添加了一个名为“post_likes”的额外列。

我正在努力的是,如果有任何方法可以输出这些数据作为标准WordPress循环的一部分?

我从DB中检索信息的代码:

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 个答案:

答案 0 :(得分: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添加/编辑/更新/删除此数据。不需要额外的代码功能(并自己进行数据库调用)
  3. 如果您使用函数创建了自己的列,则缓存插件不会优化获取这些部分的性能。
  4. 如果WP更新在数据库上执行了某些操作,则可能会删除您的数据
  5. 为什么在使用自己的流程时使用Wordpress,并在WordPress中进行黑客/更改。