Ồ, tôi đã làm điều này từ lâu rồi (trên thực tế vào cuối năm ngoái).
Giả
- Bạn đang sử dụng Permalinks Wordpress với mod_rewrite hoặc một lựa chọn tương tự.
- Bạn chưa bật register_globals(). Tắt nó đi để đảm bảo các biến toàn cầu của Wordpress không bị Kohana loại bỏ.
Đổi tên
Trước tiên, bạn cần phải đổi tên __()
chức năng trong Kohana. Giả sử, bạn đổi tên thành __t()
. Bạn sẽ cần phải thay thế nó ở mọi nơi nó xuất hiện, nếu bạn sử dụng một trình soạn thảo như Netbeans có thể tìm thấy tập quán của một hàm hoặc phương thức khá dễ dàng.
Hierarchy
Quyết định tiếp theo bạn cần làm là cho dù bạn muốn tải Wordpress bên Kohana hoặc Kohana bên Wordpress. Tôi thích cái thứ hai, mà tôi đang ghi lại dưới đây. Tôi có thể ghi lại tài liệu sau nếu bạn muốn đi tuyến đường đó.
Tôi đặt thư mục kohana vào thư mục chủ đề của mình.
Trong file functions.php của bạn về chủ đề của bạn, chỉ cần
include TEMPLATEPATH . '/kohana/index.php';
Kohana Cấu hình
tập tin index.php Kohana của bạn cũng cần một số công việc. Loại bỏ các dòng tìm install.php vì chúng sẽ tải ABSPATH . WPINC . 'install.php'
thay vào đó và hiển thị thông báo lỗi trong quản trị wordpress của bạn. Bạn cũng cần phải thay đổi error_reporting tại thời điểm Wordpress thất bại E_STRICT.
Bạn sẽ rất có thể cần phải loại bỏ một vài dòng cuối cùng của bootstrap của bạn (trong Kohana) mà xử lý yêu cầu, và thay đổi init của bạn:
Kohana::init(array(
'base_url' => get_bloginfo('home') . '/',
'index_file' => '',
));
Trong cả hai tập tin functions.php Wordpress của bạn hoặc trong bootstrap, thêm những dòng này:
remove_filter('template_redirect', 'redirect_canonical');
add_filter('template_redirect', 'Application::redirect_canonical');
nơi Application là một lớp học mà bạn chọn.
Mã của tôi cho lớp Application (không có định nghĩa lớp) là:
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;
}
cho phép Wordpress làm nó chuyển hướng cho bất kỳ trang nào có thể đã di chuyển ví dụ /about/calendar to /calendar miễn là bạn không có về bộ điều khiển và lịch hành động được xác định.
Vì vậy, bạn có nó. Bất kỳ url nào không được xác định trong Wordpress sẽ rơi vào bộ điều khiển đã xác định của bạn (hoặc sử dụng mẫu 404 của chủ đề của bạn).
bổ sung
này không bắt buộc, nhưng bạn có thể đặt header.php của chủ đề của bạn dưới Kohana bạn xem thư mục (ứng dụng hoặc trong một mô-đun) và từ bất kỳ các tập tin chủ đề của bạn
echo View::factory('header')
Bạn có thể làm điều tương tự với chân trang của bạn (hoặc bất kỳ tệp nào khác cho vấn đề đó). Trong header.php của bạn, bạn cũng có thể làm điều này:
if (isset($title)) echo $title; else wp_title(YOUR_OPTIONS);
Bằng cách đó bạn có thể trong điều khiển của bạn
echo View::factory('header')->set('title', 'YOUR_TITLE');
Để giữ url phù hợp, bạn có thể phải cởi/từ ngày kết thúc Permalinks wordpress nên /% năm% /% monthnum% /% ngày% /% postname%/ trở thành /% năm% /% monthnum% /% ngày% /% postname%, vv
Vui lòng cho tôi biết nếu bạn cần thêm bất kỳ trợ giúp nào để tích hợp Wordpress và Kohana.
Hi alex, bạn có thể xin vui lòng kiểm tra này SO câu hỏi http://stackoverflow.com/questions/20934551/access-data-from-kohana- to-wordpress có liên quan đến truy cập dữ liệu ứng dụng kohana trong wordpress.Thanks – user2681579