将Cakephp表单嵌入Wordpress

将Cakephp表单嵌入Wordpress,cakephp,wordpress,Cakephp,Wordpress,我有一个Wordpress博客,我正在使用Cakephp开发一个后端应用程序 我想用cake开发博客的联系表单(因为输入的信息可以从后端应用程序获得) 现在,我尝试使用ajax将cake视图包含到wp中。这种方法的问题是,我要么使用Js->submit,这使得将文件附加到表单变得非常复杂;要么使用form->submit,这使得显示验证错误成为问题。此外,它还造成了recaptcha插件无法显示的问题 是否有一种使用php集成表单的方法?我不需要身份验证(它是一个公共表单),但我需要能够在表单上

我有一个Wordpress博客,我正在使用Cakephp开发一个后端应用程序

我想用cake开发博客的联系表单(因为输入的信息可以从后端应用程序获得)

现在,我尝试使用ajax将cake视图包含到wp中。这种方法的问题是,我要么使用
Js->submit
,这使得将文件附加到表单变得非常复杂;要么使用
form->submit
,这使得显示验证错误成为问题。此外,它还造成了recaptcha插件无法显示的问题


是否有一种使用php集成表单的方法?我不需要身份验证(它是一个公共表单),但我需要能够在表单上显示验证错误并在表单上上载文件。

实际上,您可以使用CURL将任何网站加载到字符串中,如果您从wordpress加载带有占位符的空页面,则可以将其用作布局

<?php 
$url = "http://www.yourdomain.com/emptypage";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$output = curl_exec($curl);
curl_close($curl)

$placeholder = "{{CONTENT}}"
$placeholderPos = strpos($output,$placeholder);

$beginning = substr($output,0,$placeholderPos);
$end = substr($output,$placeholderPos+strlen($placeholder));

echo $beginning;

////// your form ////// 

echo $end;

?>


在此之后,您可能需要处理相对路径,但这应该让您开始。

因此,我终于找到了一种我认为最好的方法,因为它使用了cake类

我在webroot上创建了一个文件new_file.php,该文件基本上是index.php的副本,但它没有使用一般请求,而是请求我要查找的特定页面:

$Dispatcher = new Dispatcher();
$Dispatcher->dispatch(new CakeRequest('CONTROLLER/ACTION'), new CakeResponse(array('charset' => Configure::read('App.encoding'))));
当然,您必须将“控制器/操作”更改为您的控制器

之后,您只需将该文件包含在WordPress插件中

只有一个变化。有些方法与WP声明冲突。当您包含上述文件时,PHP会抱怨。您必须找到这些方法并将它们包装到if中,以确保该方法没有被重新声明。这可能会破坏一些功能,如本地化(function _ux0;()),但如果所包含的不是一个非常复杂的应用程序,则可以

if (!function_exists('methodName')) {

希望在Cake 3推出名称空间支持后,最后一个问题能够得到解决。

这是个坏主意,你不仅要加载一个臃肿的博客引擎,还要加载整个应用程序框架?!只需使用WordPress联系人表单插件。@Dunhamzz对于单个表单来说,这是一个坏主意,但是对于一个可能已经存在于中的更复杂的插件来说,这可能会有一些意义cakephp@Dunhamzzz谢谢你的建议,我已经考虑过了,但这不是我需要的,因为员工将在后端应用程序中处理联系请求,这是一个蛋糕应用程序。