集成 Codeigniter 和 Wordpress

Posted

技术标签:

【中文标题】集成 Codeigniter 和 Wordpress【英文标题】:Integrating Codeigniter and Wordpress 【发布时间】:2020-02-28 05:02:03 【问题描述】:

我使用 Wordpress 设计了一个网站,并一直在尝试将 Codeigniter 表单应用程序与其集成,并带有所有相应的 URL。

我将 CI 应用程序放在 Wordpress 站点的根文件夹中。该文件夹被命名为“智利”(它是由拉丁美洲国家分隔的一系列表格)。我将 .htaccess 文件更改为在必要时包含 /chile。我还补充说:

require '../wp-load.php';

到 CI index.php 文件。

我现在可以在 CI 应用程序中加载一些重要的 url,但它们似乎没有正确路由。

基本网址设置为:

$config['base_url']  =  "http://".$_SERVER['HTTP_HOST'];

$config['base_url'] .= preg_replace('@/+$@', '', dirname($_SERVER['SCRIPT_NAME'])).'/';

该网站是 www.dermusikplatz.com。该表格位于 www.dermusikplatz.com/chile/applications 下,我可以手动输入该表格。但是当我尝试提交表单时,网址奇怪地显示为 www.dermusikplatz.comapplications/save。一般来说,控制器和视图构建的 url 似乎没有正确设置。

我查看了有关路由的文档并尝试创建 $route 规则。但我不确定从什么路由到什么路由。我还看到了各种建议使用 MY_URL_helper 将 'site_url' 的值更改为 'ci_site_url' 的线程,以避免 Wordpress 和 CI 为此值之间的任何冗余,但我不知道从哪里开始即使在查看了帮助文档之后也是如此。

我也尝试过进入并更改以下语句中的每个路径值:

$this->load->view('applications/form');

到:

$this->load->view('/chile/applications/form');

但我知道这没什么意义,因为该目录不存在。我认为更改 .htaccess 文件和 base_url 会覆盖它,但似乎还有更多。

我有点迷路了,对 Codeigniter 不是很熟悉。

如果有人至少可以帮助我朝着正确的方向前进,我将不胜感激。谢谢。

【问题讨论】:

我从来没有真正做过这个,但看过一次,我记得我特别想我更喜欢设置 CI 来嵌套 Wordpress,而不是反过来。也许我错了,我不记得细节 - 但在你深入研究之前可能值得一看。我已经多次单独设置了。 你检查了吗? ***.com/a/18105075/2275490 @Vickel 是的,我做到了。谢谢。我已经按照主要答案中的步骤进行了操作。 如果您能够在应用程序中加载视图,那么您的设置可能是正确的。这可能只是解决方法而不是解决方案,您可以将$config['base_url'] = "http://".$_SERVER['HTTP_HOST']; 替换为$config['base_url'] = "http://".$_SERVER['HTTP_HOST']."/"; 并尝试吗? 感谢您的反馈。当我尝试添加 . “/“ 要么 。 “/Chile/”(如下面的答案所述),它似乎打破了观点。它们看起来没有样式。并且它不能解决控制器路由的问题。在 CI 的 .htaccess 文件中,我已经添加了这些规则:RewriteRule ^index\.php$ - [L] RewriteEngine On RewriteBase /chile/ RewriteCond %HTTP_HOST !^www\. [NC] RewriteRule ^(.*)$ http://www.%HTTP_HOST/chile/$1 [R=301,L] RewriteCond %REQUEST_FILENAME !-f RewriteCond %REQUEST_FILENAME !-d RewriteRule ^(.*)$ index.php/$1 [L] 【参考方案1】:

$config['base_url'] = "http://".$_SERVER['HTTP_HOST'];

将其更改为:

$config['base_url'] = "http://".$_SERVER['HTTP_HOST'] . '/Chile/';

值得注意的是,如果您在 Linux 上托管,则“智利”必须与您的文件夹的名称完全相同。所以,如果是“智利”,就不要叫它“智利”

【讨论】:

感谢您的反馈。当我尝试添加 . “/“ 要么 。 “/智利/”它似乎打破了观点。它们看起来没有样式。并且它不能解决控制器路由的问题。在 CI 的 .htaccess 文件中,我已经添加了这些规则:RewriteRule ^index\.php$ - [L] RewriteEngine On RewriteBase /chile/ RewriteCond %HTTP_HOST !^www\. [NC] RewriteRule ^(.*)$ http://www.%HTTP_HOST/chile/$1 [R=301,L] RewriteCond %REQUEST_FILENAME !-f RewriteCond %REQUEST_FILENAME !-d RewriteRule ^(.*)$ index.php/$1 [L] 那些 .htaccess 规则似乎只有助于加载视图,而我尝试使用 base_url 进行的更改似乎不起作用。 我不能肯定地说,但是如果你硬编码你的路径来加载你的 CSS,改变 base_url 会破坏你的 CSS 和东西。例如,如果您从 "/Chile/whatever.css" 加载 CSS 并且您的 base_url 现在包含 /Chile/ 部分,那么它将中断。更改路径后,您需要确保 CSS 和脚本的路径仍然正确。最好使用 base_url() 函数设置相对于 CSS 文件的路径,例如 src="<?php echo base_url() ; ?>css/styles.css" 或任何您的路径是。 哦,在你加载视图的地方,也可以使用base_url() 函数,正如我上面建议的那样。我关于如何处理 base_url 的建议绝对正确。硬编码路径使您的网站不可移植。 我发现了这个问题。它正在删除 index.php 中的 require '../wp-load.php'; 行。它覆盖了site_url。我认为与 WP 集成是必不可少的,但显然不是。

以上是关于集成 Codeigniter 和 Wordpress的主要内容,如果未能解决你的问题,请参考以下文章

codeigniter nodejs 和 nowjs 集成

将 Boilerplate 和 Bootstrap 与 CodeIgniter 或 Yii 集成

将 Twig 与 CodeIgniter 4 集成

如何将 codeIgniter 与 netbeans 完全集成

集成/迁移两个 CodeIgniter 应用程序。

HMVC集成在Codeigniter视图路径中。