使用 MySql 在 Wordpress 中插入帖子

Posted

技术标签:

【中文标题】使用 MySql 在 Wordpress 中插入帖子【英文标题】:Inserting a post in Wordpress using MySql 【发布时间】:2010-12-12 20:28:02 【问题描述】:

有人知道如何使用 sql 在 Wordpress 中插入新帖子吗?

【问题讨论】:

我编辑了你的问题。如果这不是您所要求的,请恢复它。 【参考方案1】:

您可以使用 Post 对象:

// Create post object
  $my_post = array();
  $my_post['post_title'] = 'My post';
  $my_post['post_content'] = 'This is my post.';
  $my_post['post_status'] = 'publish';
  $my_post['post_author'] = 1;
  $my_post['post_category'] = array(8,39);

// Insert the post into the database
  wp_insert_post( $my_post );

找到更多信息here。

【讨论】:

我必须包含哪些文件?因为我想为 wordpress 做一个单独的管理面板 顺便说一句,如果您想对此进行测试,请在博客的根目录中创建一个“test.php”文件并在此代码之前使用此行:require('./wp-blog-header. php'); 类别需要是类别 ID 的数组。这并不容易,特别是如果您还没有与类别相关的帖子。对类别分配的修复是这样的: $sCategory='Test';$asPost['post_category']=array($w​​pdb->get_var("SELECT term_id FROM $wpdb->terms WHERE name='$sCategory'", 0,0)); 这太棒了!你拯救了这一天:) 嗨,我正试图让它在插件中工作,但看起来插件代码无法使用 WordPress 功能。有人对此有想法吗?如果我是对的,真的不推荐包含 wp-load。【参考方案2】:

您的问题询问如何使用 SQL 将新帖子插入 WordPress。如果您真的想这样做,请查看“wp”数据库​​表并执行标准 INSERT - 这并不难。

但我强烈建议不要这样做 - 即使您想在正常的 WP 提供的管理仪表板之外创建一个单独的管理仪表板,您也应该使用他们提供的 core functions/API提供。例如,wp_insert_post 函数就是您要使用的函数。

我相信您可以通过包含 /wp-load.php 来使用/加载这些功能。

【讨论】:

我对 Wordpress 有点陌生,我想知道您为什么建议不要使用基本的 SQL 插入? +1 用于链接到 wp_insert_post 函数以及要包含在独立脚本中的文件的详细信息 @ssergei 因为 Wordpress 为您提供了 API。 对该建议+1。简单地在 wp_posts 中插入一个新行,并在 wp_term_relationships 中添加一个类别是行不通的:帖子计数更新,但这些帖子不显示。我不确定你现在还需要做什么。【参考方案3】:

我首先导出“wp_post”表只是为了查看结构 - 然后复制第一部分并编写第二部分;

1:从可用于插入语句 ($sql) 的变量开始

$sql = "INSERT INTO `wp_posts` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES ";

2:我从另一个表中获取了我想要插入的内容 - 但您可以在语句内部或外部设置变量,只需将变量设置为您想要的 -

$sql .= "(' ','".$post_author."',"."'".$post_date."',"."'".$post_date_gmt."',"."'".$post_content."',"."'".$post_title."',"."'".$post_excerpt."',"."'".$post_status."',"."'".$comment_status."',"."'".$ping_status."',"."'".$posd_password."',"."'".$post_name."',"."'".$to_ping."',"."'".$pinged."',"."'".$post_modified."',"."'".$post_modified_gmt."',"."'".$post_content_filtered."',"."'".$post_parent."',"."'".$guid."',"."'".$menu_order."',"."'".$post_type."',"."'".$post_mime_type."',"."'".$comment_count."'),";

之后,使用您的标准查询:

$res = mysql_query($sql); if($res): print 'Successful Insert'; else: print 'Unable to update table'; endif;

【讨论】:

它不起作用,因为没有为帖子分配任何类别,因此它不会正确显示...... 如果是CPT,不支持wp核心分类怎么办? 本文也有一些很好的帮助:linkstraffic.net/transfer-wordpress-posts-one-database

以上是关于使用 MySql 在 Wordpress 中插入帖子的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PHP Wordpress 将沙箱 Paypal 返回值插入 MySQL 表?

如何使用PHP Wordpress将沙箱Paypal返回值插入MySQL表?

wordpress:如何在数据库中默认插入默认类别“未分类”

使用php通过wordpress在mysql数据库中添加新行

在 wordpress 自定义模板中显示插入的数据

Wordpress 更新 mysql 表