首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FuelPHP到WordPress

FuelPHP到WordPress
EN

Stack Overflow用户
提问于 2015-07-20 07:55:48
回答 1查看 418关注 0票数 0

我们的任务是集成fuelPHP,在WordPress网站上运行,以获得这两个提供给开发人员的优势。我们一直在互联网上寻找如何做到这一点的方法,于是我们来到了本站

我们遵循所有的说明,是的,它成功地安装了wordpress,但是未能与FuelPHP集成,当我们试图打开fuelphp时,它返回了一个错误:

致命错误:无法在第24行的C:\xampp\htdocs\game-bootcamp\fuel\core\classes\autoloader.php中重新声明类燃料\Core\Autoloader。

那里有成功的人吗?你能告诉我们怎么做吗?

EN

回答 1

Stack Overflow用户

发布于 2016-04-29 09:25:29

请原谅我回答了一个老问题,但是网上的任何地方都没有回答这个问题。这是一个很重要的问题,因为Wordpress对最终用户有好处,而PHP燃料非常快&对程序员来说很好。

您可以通过两种方式集成Wordpress和燃料PHP。

  1. Wordpress在燃料PHP中运行
  2. 推动PHP在Wordpress中运行

first way

我敢打赌,你要求的第二个,但你张贴了第一个教程的链接。我只能给你第二个答案。

一般来说,第一种方式可能是痛苦的,但是这里有一些提示可以让你开始。Wordpress代码库-将Wordpress与您的网站集成

通过这种方式,您可以使用Wordpress主题进行重写,输出任何内容,并使用Wordpress查询函数让燃料请求起带头作用。这似乎是一个很好的集成方式,如果你想要Wordpress面板和燃料PHP显示,我不认为这是一个好主意,但如果你想-去吧。

第二条路

我想实现基于燃油PHP和Wordpress网站的后台面板的数据,从这个后台面板与燃油PHP类在Wordpress代码。

这样,您应该保留Wordpress应用程序的路由,并利用HMVC模式的燃料PHP。

我找到了这个,它给了我一个整体的想法,如何制作这个:https://github.com/robertosobachi/wp-fuel-framework

步骤#1 - Wordpress基础

不要修改Wordpress核心。不要修改Wordpress主题。要么创建自己的子主题,要么创建自己的主题。如果你想把一切都做好--你应该为此创建Wordpress插件。

然后,您可以将燃料PHP集成到functions.php文件中,但是最好的方法是使用Sidebar (Widget)区域创建自己的主题,并创建插件,该插件将使用主题定义的侧栏、定义的PHP函数或/和短代码。

在您的主题/插件代码中,您需要加载燃料PHP。您可以在Widget操作上使用它,但是这是您的选择,可以在哪里准确地加载它。

下面的代码是燃料PHP 1.8的代码,但是您可能会按照以下步骤提供更多的版本。

步骤2-燃料index.php复制

让我们假设以下文件夹结构:

/apache/www/backoffice/ (附有燃料和公用文件夹)

/apache/www/wordpress/ (带wordpress)

打开/apache/www/backoffice/public/index.php,看看那里发生了什么。第一件事是复制燃料正在做的步骤,但在Wordpress内。我粘贴的每一段代码都应该放在你的Wordpress插件或主题中(随你喜欢)。ABSPATH由Wordpress定义。

代码语言:javascript
复制
$dir = realpath(ABSPATH.'../backoffice/public');
define('DOCROOT', $dir.DIRECTORY_SEPARATOR);
define('APPPATH', realpath($dir.'/../fuel/app/').DIRECTORY_SEPARATOR);
define('PKGPATH', realpath($dir.'/../fuel/packages/').DIRECTORY_SEPARATOR);
define('COREPATH', realpath($dir.'/../fuel/core/').DIRECTORY_SEPARATOR);

现在,您可以复制燃料index.php的其余部分:

代码语言:javascript
复制
defined('FUEL_START_TIME') or define('FUEL_START_TIME', microtime(true));
defined('FUEL_START_MEM') or define('FUEL_START_MEM', memory_get_usage());

// Load in the Fuel autoloader
if ( ! file_exists(COREPATH.'classes'.DIRECTORY_SEPARATOR.'autoloader.php'))
{
    die('No composer autoloader found. Please run composer to install the FuelPHP framework dependencies first!');
}

// Activate the framework class autoloader
require COREPATH.'classes'.DIRECTORY_SEPARATOR.'autoloader.php';
class_alias('Fuel\\Core\\Autoloader', 'Autoloader');

其余的index.php代码基于我们现在不想使用的请求类,所以不要复制它。但是,您可以看到这一行:

代码语言:javascript
复制
require APPPATH.'bootstrap.php';

我们去看那个文件吧。在第一行中,您可以找到:

代码语言:javascript
复制
require COREPATH.'bootstrap.php';

让我们先从这个开始。

步骤#3 -核心bootstrap.php复制

它是保存的,并且可能需要复制该文件的第一行。

代码语言:javascript
复制
define('DS', DIRECTORY_SEPARATOR);
define('CRLF', chr(13).chr(10));

define('MBSTRING', function_exists('mb_get_info'));

require COREPATH.'base.php';

setup_autoloader();

get_composer();

不复制 register_shutdown_functionset_exception_handlerset_error_handler,除非您知道自己在做什么。您可能希望使用默认的Wordpress错误处理。使用燃料错误处理是非常棘手的,然而,如果你想-尝试它。就我个人而言我放弃了。

--您必须复制setup_autoloaderget_composer函数。它们是长期的,但它们对于使这种集成工作是至关重要的。我不是为了让这篇文章更具可读性而在这里复制它。

步骤4- APP bootstrap.php复制

希望你还没迷路。我们必须回到APP bootstrap.php并复制这一行。

代码语言:javascript
复制
\Autoloader::add_classes(array(
    // Add classes you want to override here
    // Example: 'View' => APPPATH.'classes/view.php',
));

\Autoloader::register();

\Fuel::$env = \Arr::get($_SERVER, 'FUEL_ENV', \Arr::get($_ENV, 'FUEL_ENV', \Fuel::DEVELOPMENT));

\Fuel::init('config.php');

我不确定燃料是否::init是如此重要的装载,还没有测试过它。但是,您必须知道燃料::init方法正在设置一些全局变量,比如date_default_timezone_set (根据配置),这样它就可以以某种方式修改Wordpress的工作方式。

所以,就是这样。现在,在您的插件/主题文件中,您可以向控制器发出HMVC请求。你可以访问你的模型,燃料类-就像你过去做的那样。不要忘记激活你的插件在Wordpress。

代码语言:javascript
复制
$widget = Request::forge('widget/sample')->execute();

您必须意识到,它不是自动回显视图--有关更多信息,请参阅燃料文档。

这是巴斯泰宾:链接

编辑:

我发现使用会话还有一个棘手的部分:当您只使用HMVC请求时,会话没有保存,因此您必须在代码中手动调用Session::write() (无论您想要保存它的地方)。在生成Wordpress输出之前,您将不得不调用它,所以尝试将其挂钩到init,或者将其放到您的主插件文件中。

编辑#2:

还有另一个棘手的部分与Wordpress汽车"magic_quotes_gpc“功能。并不是简单地通过$_POST = stripslashes_deep($_POST);关闭它,因为它可能破坏Wordpress的安全性。更好的方法是在添加到您的燃料代码中的数据库之前直接去掉斜杠,并且只删除那些需要删除的变量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31511332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档