如何将Wordpress整合到Kohana 3中
我现在需要做一个Kohana 3网站有一个WordPress的博客。如何将Wordpress整合到Kohana 3中
我见过Kerkness'Kohana For Wordpress,但它似乎是我想要的相反。
下面是我想到的
- 样式选项模板看起来就像Kohana的网站(费时,不干燥,可能无法正常工作)
- 包括
iframe
内的博客(丑作为所有地狱) - cURL Wordpress页面。这当然意味着我需要在评论发布等之间创建图层,这听起来像太多的工作。
有什么办法可以在现有的Kohana应用程序中包含Wordpress博客吗?你有什么建议吗?
我发现this post detailing the Kohana for Wordpress plugin,但我仍然困惑它如何工作。
这是否意味着从WordPress内,我可以打电话给Kohana控制器?这在我的情况下对我有用吗?
我已经使用wordpress代码点火网站的CMS。这是我用来提取页面内容的方法,而不是博客内容,但也许你可以稍微改变它以适应你的需求。
在我的前端控制器我增加了WordPress的头文件
require('/path/to/wp-blog-header.php');
这使您可以访问两个功能,你需要
get_page() – Get the page data from the database
wpautop() – Automatically add paragraph tags to page content
要获得页面数据
$page_data = get_page(4); // Where 4 is the page ID in wordpress
如果发生此错误:
Fatal error: Only variables can be passed by reference…
你必须做这样
$page_id = 4;
$page_data = get_page($page_id);
因为在PHP
视图
随后的某些版本bug
<?= wpautop($page_data->post_content) ?>
希望这有助于
编辑
我在文件系统的/ blog中安装了wordpress。所以wordpress通常作为博客运行。我只是使用这种方法来抓取页面
由于WordPress的工作方式,这将非常困难。具体来说,它使用遍布全局的全局变量,并且由于Kohana是有作用域的,所以您将无法访问这些变量。
长话短说:你想要的东西几乎是不可能的。但是,如果你使用它(没有黑客WP),我真的很感兴趣,看看你是如何做到的。
谢谢,我认为这可能很困难。上次我尝试了它(用我的个人博客),我写了Kohana 2.3的整个前端。如果我确实得到它的工作,我会让你知道。 – alex 2010-05-14 09:25:54
你可以请检查这个SO问题http://stackoverflow.com/questions/20934551/access-data-from-kohana-to-wordpress并指导我。 – user2681579 2014-01-05 14:17:02
我一直认为这会比较容易。也就是说,要使用WordPress作为您网站的后端(至少在博客部分),并使用Kohana来提供帖子和页面。如果我没有弄错,所有你需要做的就是设置你的模型(帖子,评论,页面),从WordPress数据库收集他们的数据(带或不带ORM),而不是一个新的。
这是实现它的简单方法(我为自己的博客所做的)。但是你需要为任何功能创建包装(例如发布评论)。 – alex 2010-05-25 23:26:45
哦,我想通了,我这样做是很久以前(其实是对去年年底)。
假设
- 您使用的是有mod_rewrite的或类似的选项WordPress的永久链接。
- 您没有启用register_globals()。关闭Word以确保Wordpress的全局变量不会被Kohana删除。
重命名
首先,你需要重命名的Kohana的__()
功能。说,你把它重命名为__t()
。你需要在它出现的任何地方替换它,如果你使用像Netbeans这样的编辑器可以找到函数或方法的用法,这很容易。
层次
你需要做的下一个决定是是否要加载的WordPress内的Kohana Kohana的还是里面的WordPress。我更喜欢后者,我将在下面进行介绍。如果你愿意走这条路线,我可以记录后者。
我把kohana目录放在我的主题目录中。
在你的主题的functions.php文件,只需
include TEMPLATEPATH . '/kohana/index.php';
Kohana的配置
你的Kohana的index.php文件还需要一些工作。删除找到install.php的行,因为它们会加载ABSPATH . WPINC . 'install.php'
,并在wordpress管理中显示错误消息。您还需要在Wordpress失败E_STRICT时更改error_reporting。
您将很可能需要删除您的引导(在Kohana中)的最后几行处理该请求,并改变你的init:
Kohana::init(array(
'base_url' => get_bloginfo('home') . '/',
'index_file' => '',
));
在任何你的WordPress functions.php文件或在您的引导,添加这些行:
remove_filter('template_redirect', 'redirect_canonical');
add_filter('template_redirect', 'Application::redirect_canonical');
其中应用是一类你选择的。
我对应用类(无类定义)的代码是:
public static function redirect_canonical($requested_url=null, $do_redirect=true)
{
if (is_404() && self::test_url())
{
echo Request::instance()->execute()->send_headers()->response;
exit;
}
redirect_canonical($requested_url, $do_redirect);
}
public static function test_url($url = NULL)
{
if ($url === NULL)
{
$url = str_replace('?'.$_SERVER['QUERY_STRING'], '', $_SERVER['REQUEST_URI']);
$url = trim($url, '/');
}
foreach (Route::all() as $route)
{
/* @var $route Route */
if ($params = $route->matches($url))
{
$controller = 'controller_';
if (isset($params['directory']))
{
// Controllers are in a sub-directory
$controller .= strtolower(str_replace('/', '_', $params['directory'])).'_';
}
// Store the controller
$controller .= $params['controller'];
$action = Route::$default_action;
if (isset($params['action']))
{
$action = $params['action'];
}
if (!class_exists($controller))
return false;
if (!(method_exists($controller, 'action_' . $action) || method_exists($controller, '__call')))
return false;
return true;
}
}
return false;
}
,它可以让WordPress的做到这对于那些可能已经例如移动的任何页面重定向/约/日历到/日历只要你没有一个约控制器和定义日历行动。
所以你有它。任何未在Wordpress中定义的URL都会落入您定义的控制器(或使用您的主题的404模板)。
附加
这不是必需的,但你可以把你的主题的header.php在你的Kohana views文件夹(应用程序或模块),并从任何主题文件的
echo View::factory('header')
你可以用你的页脚(或其他任何文件)做同样的事情。在你的header.php,你也可以这样做:
if (isset($title)) echo $title; else wp_title(YOUR_OPTIONS);
这种方法你可以在你的控制器
echo View::factory('header')->set('title', 'YOUR_TITLE');
为了保持一致的网址,你可能需要从年底起飞/ WordPress的永久链接所以/%,比去年%/%monthnum%/天%%/%postname%/成为/%,比去年%/%monthnum%/天%%/%postname%等
请让我知道如果你需要任何更多的帮助整合Wordpress和Kohana。
+1这太好了!非常感谢。我最终为项目跳过Kohana并单独使用WordPress,并且我学到了很多WordPress的工作方式(以及一些可疑的编码......)。如果我决定将来一起使用这些项目,我一定会考虑这一点。 – alex 2010-08-29 01:37:06
谢谢。祝你的项目好运。 – Zahymaka 2010-08-29 01:53:02
我在我的kohana应用程序中使用wordpress论坛。我将kohana应用程序数据库和wordpress数据库保存在单独的实例中。我想在wordpress数据库中创建一个数据库条目,同时在kohana应用程序中添加一个新用户。可以使用以下答案如果可能,你可以提出一些想法。 – user2681579 2014-01-05 13:54:19
另一种解决方案是保持Wordpress和Kohana的安装完全分离。然后你创建一个自定义的Wordpress主题,它将从Kohana中拉出页眉和页脚(你可以为它创建一个Kohana控制器)。
将页眉和页脚插入后,即使它仍然是一个完全独立的安装,该博客也会与您的网站集成。好处是,没有什么可以破解Wordpress或Kohana来让它工作。
有关于这个方法在这个博客帖子的更多细节:Integrating Wordpress into a Kohana application
正是我在找的东西。多谢,伙计! – 2016-07-16 20:41:51
嗨亚历克斯,你能不能请检查这太问题http://stackoverflow.com/questions/20934551/access-data-from-kohana- to-wordpress与wordpress中访问kohana应用程序数据有关。感谢 – user2681579 2014-01-06 06:56:49