CodeIgniter与WordPress集成

10

我的网站是用Wordpress设计的。一些主题页面有一个定制的PHP脚本用于预订物品,我想将其重构为CodeIgniter,以获得更多的灵活性。问题:

1)如何在WP中使用CI函数与CI的路由系统?我需要创建一个CI页面index.php/controller/page1/,然后在WordPress中调用它吗?

2)我需要使用CodeIgniter的“视图”系统还是WordPress的“主题页面”来获取我的结果?

谢谢


你有没有考虑在CI视图上运行WP?如果这是一个选项,那么这里有一种方法可以实现:https://dev59.com/9nI95IYBdhLWcg3w7CjL - sulfureous
3个回答

13

我使用了以下内容。

我的目标是在一些页面上使用CodeIgniter,并保留其他页面在Wordpress中不变。我只需要完成几个步骤:

将CI文件夹复制到Wordpress根目录

修改CI的“index.php”,添加一个包含语句,以将WP函数添加到CodeIgniter中:

@require '../wp-load.php';
require_once BASEPATH.'core/CodeIgniter.php';

添加这行代码后,就可以在CodeIgniter中使用WordPress函数了,主要用于视图。

修改WP的.htaccess文件以不重写CI的URL: 在此行之后:

 RewriteRule ^index\.php$ - [L]

添加以下这行代码:

RewriteCond %{REQUEST_URI} !^/(codeigniter_folder|codeigniter_folder/.*)$

那么 CI 视图可以使用 WP 函数。


2
只是为了让那些深入研究这个主题的人受益,记录了一些好的资源 - http://www.marketingadept.com/blog/2013/02/integrating-codeigniter-and-wordpress/ 和 http://wildmice.ca/en/blog-posts/how-to-use-wordpress-inside-codeigniter/。 - Akshay Raje
不需要更改.htaccess或将ci文件夹放置在wordpress或blog文件夹中。没有这个也可以正常工作。但是请添加以下行: ob_start(); @require '../wp-load.php';并根据您的目录路径设置wp-load.php的路径。 - Pankaj

3
如果您有一个使用登录会话的CI应用程序,您需要修改“wp-includes” WP文件夹中的“load.php”文件。要执行此操作,请按照PhilB在此链接中提供的答案进行操作。要获取完整的说明,请访问此帖子

1
这真的很有帮助。谢谢! - MrD

-3
WordPress和CodeIgniter都是PHP中最受欢迎的框架。CodeIgniter是一个轻量级的PHP框架,可以帮助开发可以与WordPress集成的应用程序。虽然一些用户喜欢分别开发CodeIgniter和WordPress元素,但我们将通过一个示例来了解两个平台上的主导航和页脚相似的情况,因为更新两次导航和页脚没有太多意义。
在这里,我们学习如何使用WordPress和CodeIgniter:
1. 如何将已运行的WordPress网站集成到CodeIgniter中。 2. 如何将已运行的Codeigniter网站集成到WordPress中。 3. 将CodeIgniter集成到WordPress中。许多网站所有者仍然倾向于将WordPress作为他们的主要内容管理系统(CMS),考虑到WordPress提供的广泛功能,这也不足为奇。
好的,让我们开始将CodeIgniter集成到WordPress中,WordPress是我们的主要应用程序,我们将在CodeIgniter中使用其功能,同时将CodeIgniter应用程序保留在子目录中。
步骤1:在CI的index.php文件中,在调用Codeigniter引导文件之前立即添加WordPress的wp-load.php文件。
在将任何WordPress功能添加到CI文件之前,我们将测试以确保一切正常。我们的应用程序的第一页看起来很好,但仅此而已。我们应用程序中的每个URL,包括表单处理程序,都被重定向到根目录(即WordPress目录),导致404错误。我们发现WordPress和Codeigniter都有一个全局范围内的“site_url”函数。通过在CodeIgniter之前加载WordPress引导文件,我们获得了WordPress site_url。Codeigniter函数“失败”是因为它正在检查是否存在site_url函数。
步骤2:扩展Codeigniter URL Helper。我们的解决方案是“扩展”CodeIgniter的URL助手。通过使用ci_site_url,我们可以解决site_url问题。My_url_helper.php(helper)文件应该在CodeIgniter的应用程序目录中。
步骤3:将site_url更改为ci_site_url。将所有site_url文件引用替换为ci_site_url,包括应用程序、控制器、模型和目录。
完成这些步骤后,我们的CI应用程序就可以工作了。
步骤4:停止WordPress管理我们的cookie!我们构建在Codeigniter中的管理面板仍然无法正常工作。我们的凭据已被接受,但仍然重定向到登录页面。当您登录时,CodeIgniter会为每个活动数据库会话创建cookie。这可能会导致WordPress引导文件纠正此问题。这是因为WordPress通过$_COOKIE全局循环并对所有元素实施add_magic_quotes功能,除了CodeIgniter cookie。
如果您已经在CodeIgniter中创建了网站并添加了博客页面,则可以将WordPress集成到CodeIgniter中。首先,在您的网站上的名为“blog”的文件夹中安装WordPress。它将位于CodeIgniter网站的顶级目录中。因此,它将与CI安装的系统文件夹一起位于同一位置。如果您已经为您的站点拥有DB,请让WordPress向该相同的DB添加表,并使用前缀使事情变得简单。
之后,在CodeIgniter的index.php文件的顶部添加以下行。根据需要更改路径以指向您的WordPress根目录。
完成!这段代码允许在不离开CodeIgniter站点的情况下访问WordPress博客。更多帮助程序函数在WordPress文档中详细说明。

查看更多:如何将CodeIgniter与WordPress集成


2
欢迎来到Stack Overflow!在编写答案时可以参考外部资源,但是完全复制冗长文章的整个部分并不能构成一个好答案。这只会重复内容,是多余的。我甚至还没有提及潜在的版权侵犯问题...您能否编辑您的回答,用自己的话来表述这篇文章的内容? - anothernode
我的一篇名为“如何将CodeIgniter与WordPress集成”的博客文章中,我们讨论了这个主题。在那里,我们发布了来自该帖子的答案并提供了链接。这是我们的博客文章,我在其中发布了我的答案。谢谢。 - James Melo
如果您是原始文本的作者,那么显然没有版权问题。但最好能够提取与问题有关的部分,而不仅仅是复制整个部分。 - anothernode
1
只读取第一行(不往下读),你写道“WordPress和CodeIgniter都是PHP中最流行的框架”。你必须先了解CMS和框架之间的区别。 - Muaaz Khalid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接