如何构建wordpress插件以从自定义数据库中提取数据以显示为帖子?

时间:2011-05-03 20:33:39

标签: wordpress-plugin wordpress

我有一个结构化数据数据库,我想在wordpress中显示为帖子。我可以将它们导入wordpress数据库,但是我必须保持数据镜像与主数据库同步,这会增加各种复杂性。

我无法找到正确的操作挂钩来覆盖它们被拉出的数据库,并且自定义的帖子类型功能听起来像我想要的但似乎只有在从wordpress数据库中提取时才有意义。

我可以使用自定义模板标签来显示我的数据,但这些帖子仍会从wordpress db中提取。

我看过一些房地产上市插件和运动团队管理插件,因为这似乎是一个类似的问题,即使我不处理房地产列表或运动队,但他们仍然存储信息wordpress db。

除了分叉wordpress弄乱帖子和查询类似乎兔子洞我不想下去有什么我的选择?解决同样问题的其他插件也很有用。

我是wordpress开发的新手,但不是网络开发。

编辑:如果有必要或使事情更简单,我可以接受但不理想将自定义数据放在与wordpress相同的数据库中。

1 个答案:

答案 0 :(得分:2)

您可以在WordPress中创建表,并像处理任何其他数据库表一样与这些表进行交互。 WP附带了许多有用的功能,可以节省您的时间。要安装初始表,您需要使用dbdelta功能。该编码以此为例:

global $jal_db_version;
$jal_db_version = "1.0";

function jal_install() {
   global $jal_db_version;

   $table_name = $wpdb->prefix . "liveshoutbox";

   $sql = "CREATE TABLE " . $table_name . " (
      id mediumint(9) NOT NULL AUTO_INCREMENT,
      time datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
      name tinytext NOT NULL,
      text text NOT NULL,
      url VARCHAR(55) DEFAULT '' NOT NULL,
      UNIQUE KEY id (id)
    );";

   require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
   dbDelta($sql);

   add_option("jal_db_version", $jal_db_version);
}

function jal_install_data() {
      $welcome_name = "Mr. Wordpress";
      $welcome_text = "Congratulations, you just completed the installation!";

      $rows_affected = $wpdb->insert( $table_name, array( 'time' => current_time('mysql'), 'name' => $welcome_name, 'text' => $welcome_text ) );
}

有关详情,请参阅http://codex.wordpress.org/Creating_Tables_with_Plugins

接下来,对于任何CRUD函数,您都希望使用WP_Query类。该手抄本在解释每个功能如何运作方面做得非常出色:http://codex.wordpress.org/Function_Reference/WP_Query

如果可能的话,我建议使用自定义帖子类型功能开发您的插件。如果你这样做,它将更好地与WP一起工作,其他插件将更好地使用它,并且用户将更容易理解如何操纵你的插件。在codex中有一个很棒的文档,它解决了在WP数据库中不必要地创建更多表的问题,但我似乎无法找到它。也许其他人可以指向你。