0

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

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

我正在努力解决的是是否有任何方法可以将此数据作为标准 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>'; }
?>

但我需要知道是否有办法将其添加为循环的一部分,这样我就可以使用缩略图、按类别过滤等。

4

1 回答 1

1

好吧,这在很多方面都是错误的。永远不要改变 WP 表
post_likes应该是一个post_meta(检查add_post_meta

数据库连接应该用$wpdb

并且显示帖子应该在循环中完成,不需要数据库连接来做到这一点。
您可以在其中使用get_post_meta来获取您的post_likes
And the like_post+1 them with update_post_meta

如果您需要更改循环,请使用WP_Query

为什么你不应该改变 WordPress 表格

  1. 帖子(和用户)所需的所有替代“列”都应存储在该*_meta表中。看看这些表,你应该能够理解它是如何工作的。
  2. 这样您就可以使用所有 *_post_meta 来添加/编辑/更新/删除这些数据。无需自己编写额外的代码功能(并进行数据库调用)
  3. 如果您确实使用函数创建了自己的列,缓存插件不会优化您获取这些部分的性能。
  4. 如果 WP 更新对数据库执行某些操作,它可能会删除您的数据
  5. 当您使用自己的流程并围绕 WordPress 进行破解/更改时,为什么要使用 Wordpress。
于 2012-09-28T12:21:27.233 回答