集成 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的主要内容,如果未能解决你的问题,请参考以下文章
将 Boilerplate 和 Bootstrap 与 CodeIgniter 或 Yii 集成