如何将 WordPress 集成到 Kohana 3 中

2023-11-23

我现在需要让 Kohana 3 网站拥有一个 Wordpress 博客。

我见过柯克尼斯用于 WordPress 的 Kohana,但这似乎与我想要的相反。

这是我想到的选项

  • 设计一个模板,使其看起来与 Kohana 网站一模一样(耗时、非 DRY 并且可能不起作用)
  • 将博客包含在iframe(丑陋如地狱)
  • cURL Wordpress 页面。这当然意味着我需要在评论发布等之间创建层,这听起来工作量太大了。

有什么方法可以将 Wordpress 博客包含在现有的 Kohana 应用程序中吗?你有什么建议吗?

I found 这篇文章详细介绍了 Kohana for Wordpress 插件,但我仍然对其工作原理感到困惑。

这是否意味着我可以在 Wordpress 中调用 Kohana 控制器?对于我的情况,这对我有用吗?


哦,我很久以前就这样做了(实际上是去年年底)。

假设

  1. 您正在将 WordPress 永久链接与 mod_rewrite 或类似选项一起使用。
  2. 您没有打开 register_globals() 。将其关闭以确保 WordPress 的全局变量不会被 Kohana 删除。

Renaming

首先,您需要重命名__()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 管理员中显示错误消息。您还需要更改 error_reporting,因为 Wordpress 失败时 E_STRICT。

您很可能需要删除处理请求的引导程序(在 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');

where 应用是您选择的班级。

我的代码应用类(没有类定义)是:

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 可以对任何可能已移动的页面进行重定向,例如/关于/日历 to /日历只要你没有about控制器和calendar已定义操作。

所以你有它。任何未在 WordPress 中定义的 url 将落入您定义的控制器(或使用主题的 404 模板)。

额外的

这不是必需的,但您可以将主题的 header.php 放在 kohana 视图文件夹(应用程序或模块中)下以及任何主题文件中

echo View::factory('header')

您可以对页脚(或与此相关的任何其他文件)执行相同的操作。在 header.php 中,您还可以这样做:

if (isset($title)) echo $title; else wp_title(YOUR_OPTIONS);

这样你就可以在你的控制器中

echo View::factory('header')->set('title', 'YOUR_TITLE');

为了保持 url 一致,您可能需要去掉 WordPress 永久链接末尾的 /,这样/%年%/%月%/%日%/%帖子名%/变成/%年%/%月%/%日%/%帖子名%, etc


如果您在集成 Wordpress 和 Kohana 方面需要更多帮助,请告诉我。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 WordPress 集成到 Kohana 3 中 的相关文章

  • PHP 如何判断用户是否按下了 Enter 键或 Submit 按钮?

    我遇到的问题是我在一个表单中有多个提交输入 每个提交输入都有不同的值 我更愿意将它们保留为提交 Whenever the user presses Enter it is as though the topmost submit input
  • gmail 不断阻止 PHPmailer 登录

    我将在接下来的 8 小时内部署一个网站 而 Gmail 刚刚停止接受 PHPmailer 登录我的帐户 起初 它在测试过程中工作了几个小时 然后 它就停止工作了 我已经允许所有允许不太安全的应用程序从 gmail 登录 但它仍然不允许 ph
  • 搜索引擎如何找到相关内容? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Google 在解析网络时如何找到相关内容 例如 Google 使用 PHP 原生 DOM 库来解析内
  • 删除PHP字符串中所有不匹配的字符?

    我有一个文本 我想从中删除所有不属于以下字符的字符 所需字符 0123456789 abcdefghijklmnopqrstuvwxyz n 最后一个是我确实想保留的 n 换行符 要匹配除列出的字符之外的所有字符 请使用反转字符集 http
  • 单词之间没有空格的语言(例如亚洲语言)中的断词?

    我想让 MySQL 全文搜索适用于日语和中文文本以及任何其他语言 问题在于这些语言以及可能其他语言通常在单词之间没有空格 当您必须键入与文本中相同的句子时 搜索没有用 我不能只在每个字符之间添加空格 因为英语也必须有效 我想用 PHP 或
  • 如何从父类函数访问子类中定义的常量?

    我从 php net 看到这个例子 但 c MY CONST 仅在 5 3
  • 如何使用 php 下载/打印页面的特定部分

    我有一个 HTML 页面如下 Lorem Ipsum is simply dummy text of the printing and typesetting industry Lorem Ipsum has been the indust
  • 是否可以使用 PHP 重定向发送 POST 数据?

    更新 这不是重复的如何使用 PHP 发送 POST 请求 https stackoverflow com questions 5647461 how do i send a post request with php 那里的解决方案对我不起
  • 从 .phar 存档中提取文件

    对于 Phar 文件 我完全错过了一些东西 我正在安装一个需要 phpunit pdepend 和其他依赖项的项目 我将它们作为 phar 文件获取 但是 我无法使用命令行工具 php 命令 从中提取文件 我用谷歌搜索了这个问题 但没有发现
  • “使用未定义常量”注意,但该常量应该被定义

    共有三个文件 common php controller php 和 user php 文件 common php 如下所示 文件controller php看起来像 文件 user php 如下所示 执行脚本时 会给出通知 注意 使用未定
  • 交换关联数组中的两个项目

    Example arr array apple gt sweet grapefruit gt bitter pear gt tasty banana gt yellow 我想调换一下柚子和梨的位置 这样数组就变成了 arr array ap
  • 在 PHP 中使用 phpseclib 时出现 RSA 问题

    我正在尝试在 phpseclib 中使用 RSA 实现 我认为在函数中执行一次代码并重新使用该函数会更容易 当我尝试向代码发送短信时 我收到一条错误消息 提示 解密错误 测试还让我意识到每次代码运行时密文都是不同的 所以我显然在那里做错了什
  • PHP 与 MySQL 查询性能( if 、 函数 )

    我只看到这个artice http www onextrapixel com 2010 06 23 mysql has functions part 5 php vs mysql performance 我需要知道在这种情况下什么是最好的表
  • Woocommerce 结账自定义选择字段

    我有以下功能 将选择列表添加到 woo commerce 结账表单中 woocommerce form field airport pickup array type gt select class gt array airport pic
  • jQuery Mobile 表单验证

    我有一个移动网站 除了验证之外一切都工作正常 基本上我希望从用户那里获取值 然后在单独的页面 process php 上处理它们 但是 在这样做之前 我需要检查以确保字段已填充 我已经研究了几种方法来做到这一点 但似乎没有一种有效 我现在有
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • 表单提交后如何保留选择字段中的选定值?

    我有一个用于将票证上传到数据库的主页 我有一个选择字段 我想保留用户在提交表单之前选择的值 但它没有发生 这是我选择字段的代码
  • CURL 中的 data-urlencode 是什么意思?

    我搜索了很多个小时试图弄清楚 php curl 中的 data urlencode 是什么 我尝试过这个 但我认为这是不对的 xmlpost object1 file https www lob com goblue pdf 在文档中是 d
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • 如何在 Laravel 中使用 PUT http 动词提交表单

    我知道这个问题可能已经提出 但我就是无法让它发挥作用 如果有人可以帮助我 我将非常感激 我安装了 colletive form 但答案也可以是 html 表单标签 现在列出我的表格 我的路线和我的例外情况 Form model array

随机推荐