【问题标题】:How do I include CodeIgniter within a WordPress plugin?如何在 WordPress 插件中包含 CodeIgniter?
【发布时间】:2011-05-11 23:52:40
【问题描述】:

我有一个 WordPress 网站。我正在为 WordPress 编写一个插件,我想在插件中使用 CodeIgniter 框架。我遇到了麻烦,因为 CodeIgniter 引导文件“index.php”希望在全局范围内运行,而不是在函数内。

现在,在我的插件中,我执行以下操作: // BEGIN: 插件代码 函数分类模板重定向() { 全球 $wp; $plugin_path = plugin_dir_path(__FILE__); if (preg_match('/^CI/', $wp->request)) // 使用 CodeIgniter 处理请求 { include($plugin_path."/index.php"; // 包含 CodeIgniter 引导文件 死(); } } add_action('template_redirect', 'classifieds_template_redirect'); // END: 插件代码

正在抛出以下错误:

致命错误:在第 47 行的 /usr/local/apache/htdocs/site.utils/htdocs/CodeIgniter/system/core/Utf8.php 中的非对象上调用成员函数 item()

我相信这是因为 CodeIgniter 期望它的引导 index.php 文件在全局范围内运行。

有什么想法吗?

【问题讨论】:

  • 您希望将 codeigniter 的哪些部分用于此 wordpress 插件?这似乎过于复杂了。
  • 我想使用 codeigniter 中的 url 功能,它会根据 url 自动调用控制器/方法......这将包含在 wordpress 插件中。
  • 我不知道,听起来你想在我的方孔中装一个圆钉。
  • Wordpress 不是已经内置路由了吗?
  • 我同意 gclaghorn。你听起来想重新发明轮子。

标签: php wordpress codeigniter plugins


【解决方案1】:

以下是您的选择:

  1. 重写以特定标识符开头的 URL(使用您的网络服务器)以发送到 CodeIgniter 的引导程序
  2. 重写 CodeIgniter 的路由样板以适应不通过引导程序在全局范围内运行
  3. 在 WordPress 中使用一个小的 MVC 插件而不是 CodeIgniter

我将介绍第一个,因为我认为如果你坚持使用 CodeIgniter 是最有意义的。我将为您提供一些使用 Apache 作为网络服务器和 mod_rewrite 来完成此任务的概念验证代码。

基本上,我们将实现的只是您向我们展示的代码,但我们将让 Apache 为我们做这件事,使 CodeIgniter 通过其引导程序在全局范围内运行。

您所做的就是向 WordPress .htaccess 文件添加更多规则。像这样:

<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /

        # Here's the code which rewrites the URL to your CodeIgniter plugin.
        RewriteRule ^CI/(?.*)$ wp-content/plugins/ci-plugin/index.php/$1 [QSA,L]

        RewriteRule ^index\.php$ - [L]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /index.php [L]

</IfModule>

现在对www.example.com/CI/... 的所有请求都将在全局范围内传递给 CodeIgniter 的引导程序。

【讨论】:

  • 上面提到的mod-rewrite解决方案并没有解决问题。这不包括 wordpress 上下文中的 codeigniter。执行 mod-rewrite 解决方案就好像我根本没有运行 wordpress。我正在寻找的解决方案是我可以在 wordpress 中使用 codeigniter 作为我的插件框架。
  • 你为什么给我们看代码说你想要这个确切的东西呢?你需要更好地解释。您想使用 wordpress 主题引擎,然后在主题中运行插件功能吗?然后用plugin生成插件函数的输出?
猜你喜欢
  • 2011-09-07
  • 1970-01-01
  • 2014-06-29
  • 1970-01-01
  • 2017-06-23
  • 2016-02-27
  • 1970-01-01
  • 2015-04-17
  • 1970-01-01
相关资源
最近更新 更多