【问题标题】:Get WordPress to Read a Custom Database让 WordPress 读取自定义数据库
【发布时间】:2015-05-01 12:06:24
【问题描述】:

(如果您不需要背景,请向下滚动提问)

几天来,我一直在从事一个项目,简单来说,它允许用户搜索内部公司 ID,然后显示与该 ID 相关的大量信息(全部存储在 SQL 数据库中)。只是给你一点背景知识,我一直使用 WordPress,我喜欢 WP - 自定义帖子类型、自定义字段等 - 我一直发现它对于大多数事情都是一个很好的解决方案。

现在我遇到了一些障碍。我需要“前端”读取的这个数据库无法更改,也无法移动(/与 WP 表合并等),因为其他应用程序从中读取相同的“实时”数据。

我已经设法将一个很小的(某种)前端和搜索功能放在一起。但是我仍然遇到很多问题,我不是 PHP/SQL 等方面的专家。

我的问题是:

对我来说,WordPress 似乎是最好的选择。如何让 WordPress 从完全独立于 WP 的数据库中“读取”并基于此数据“生成”页面(以便用户可以搜索、查看此自定义数据中的信息等),例如自定义帖子类型/字段,但来自从未通过 WP 生成的数据库? 我了解运行 WP 的核心功能等仍需要(但单独)一个 WP 表。

任何帮助将不胜感激!

【问题讨论】:

    标签: php mysql database wordpress field


    【解决方案1】:

    我认为在这种情况下 WP 不是最好的选择。为什么你不使用一些 php/python 框架来创建一个新的应用程序来做到这一点?它看起来像一个简单的应用程序 - 只是搜索 App/ID 并显示一些信息。

    如果你将使用 WP,我认为它会非常复杂,因为你将需要做很多工作来将某些类型的 your-sql-version 转换为 wp-sql-version 等等......

    尝试一些 PHP 框架,如 Laravel(http://laravel.com/) 甚至 Web2py(一个简单而优秀的 Python 框架(http://www.web2py.com/)。Web2py 非常简单,可以在您现有的数据库中连接您。

    希望对你有用。

    【讨论】:

    • 感谢 Franzé,它们看起来不错,但对我来说太复杂了,不幸的是我现在没有时间学习 Python。不过我很感激这些建议。
    【解决方案2】:

    WordPress 的内部结构针对 WordPress 设计的特定数据库进行了大量定制。尽管您可能可以使用各种钩子和过滤器强制它执行您想要的操作,但这将是大量工作并且可能很脆弱。

    最实用的方法似乎是让 WordPress “镜像”您的其他数据库。

    1) 为您的其他数据库中包含的信息类型创建一个或多个自定义帖子类型

    2) 编写一个同步程序,将数据从另一个数据库中取出,并以导入的数据作为内容创建适当的自定义类型的帖子(并删除不再需要的自定义帖子)。您需要有某种方式(例如,post slug 或自定义帖子元数据)来记录给定帖子来自哪个其他 DB 记录,这样您就不会创建重复项)。

    同步程序非常简单,完成后,您就可以将所有标准 WordPress 功能与其他数据一起使用。

    【讨论】:

      【解决方案3】:

      听起来你让它变得比它需要的更复杂。使用http://codex.wordpress.org/Class_Reference/wpdb 读取/写入数据库并访问您想要的表和数据,即

      $mydb = new wpdb('username','password','database','localhost');
      $rows = $mydb->get_results("select Name from my_table");
      echo "<ul>";
      foreach ($rows as $obj) :
         echo "<li>".$obj->Name."</li>";
      endforeach;
      echo "</ul>";
      

      如果需要显示标准 WordPress 循环和自定义数据,请使用自定义页面模板 http://codex.wordpress.org/Page_Templates。

      显示来自该数据库的数据是一回事;搜索是另一回事。为了搜索该自定义数据,您需要使用 php 仅在这些表上运行搜索,因为它们不是标准的 Wordpress 表,因此无法通过 WordPress 站点搜索功能进行搜索。请参阅Creating a search form in PHP to search a database? 在这种情况下,您将需要一个自定义页面模板来显示 php 搜索表单和结果。

      【讨论】:

        【解决方案4】:

        Wordpress 使用 EZSQL 进行数据库连接,它说您可以创建多个连接。

        所以你的第一个数据库连接变量是$wpdb,你可以用不同的数据库创建另一个 $wpdb1 = new wpdb('username','password','database2','localhost');

        现在您可以使用 varisble $wpdb2 查询第二个数据库。

        了解有关 EZSQL 的更多信息,请访问 justinvincent.com/ezsql

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-09-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-09-28
          • 2015-01-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多