Oh, I (aslında geçen yıl sonuna doğru) uzun zaman önce yaptım.
Assumptions
- Sen mod_rewrite'ı veya benzer bir seçeneği ile Wordpress kalıcı bağlantı kullanıyor.
- Sen register_globals yok () döndü. Wordpress global değişkenler Kohana tarafından kaldırıldı alamadım sağlamak için onu kapatın.
Renaming
İlk olarak, Kohana yılında __()
fonksiyonu yeniden adlandırmak gerekir. Eğer __t()
olarak adlandırın, söyle. Eğer bir işlev veya yöntem kullanımları bulabilirsiniz Netbeans gibi bir editör kullanıyorsanız oldukça kolay olan, her yerde görünür değiştirmek gerekiyordu.
Hierarchy
Yapmanız gereken bir sonraki karar Wordpress içinde Kohana veya Kohana içinde Wordpress yüklemek isteyip istemediğinizi olduğunu. Ben aşağıda belgeleyen ediyorum sonuncusunu tercih. Eğer bu yolu gitmek için tercih ediyorum eğer ben ikinci belge olabilir.
Benim tema dizininde Kohana dizini koymak.
Temanızın functions.php dosyasına, sadece
include TEMPLATEPATH . '/kohana/index.php';
Kohana Configuration
Sizin Kohana en index.php dosyası da biraz çalışma gerektiriyor. Bunun yerine ABSPATH . WPINC . 'install.php'
yüklemek ve wordpress admin bir hata mesajı verir gibi İnstall.php bakmak satırları kaldırın. Ayrıca Wordpress E_STRICT başarısız an olarak error_reporting değiştirmek gerekir.
Çok büyük olasılıkla isteği işlemek (Kohana içinde) bootstrap son birkaç satır kaldırmak ve init değiştirmeniz gerekir:
Kohana::init(array(
'base_url' => get_bloginfo('home') . '/',
'index_file' => '',
));
Ya da Wordpress functions.php dosyası veya bootstrap olarak, şu satırları ekleyin:
remove_filter('template_redirect', 'redirect_canonical');
add_filter('template_redirect', 'Application::redirect_canonical');
Application sizin seçtiğiniz bir sınıf olduğu.
(Sınıf tanımı olmadan) Application sınıf için benim kod:
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 sağlar ki bu örneğin taşınmış olabilir herhangi bir sayfa için yönlendirme var yok /about/calendar için /calendar sürece bir about denetleyicisi ve calendar eylemi tanımlanmış yok gibi.
Yani orada o var. Wordpress içinde tanımlanan hiçbir adresler tanımlı kontrolöre düşmek (veya temanın 404 şablonu kullanın) olacaktır.
Additional
Bu gerekli değildir, ancak Kohana Defa klasörü altında (bir uygulama veya modül) ve tema dosyaları herhangi temanızın header.php koyabilirsiniz
echo View::factory('header')
Siz (ya da bu konuda herhangi bir diğer dosyaları) ve altbilgi ile aynı şeyi yapabilirdi. Senin header.php, ayrıca bu yapabilirdi:
if (isset($title)) echo $title; else wp_title(YOUR_OPTIONS);
Eğer denetleyicisi olabilir bu şekilde
echo View::factory('header')->set('title', 'YOUR_TITLE');
Tutarlı adresler tutmak için, Wordpress ucundan / çıkarmak zorunda kalabilirsiniz /%year%/%monthnum%/%day%/%postname%/ olur /%year%/%monthnum%/%day%/%postname%, vb permalinks
Eğer Wordpress ve Kohana entegre daha fazla yardıma ihtiyacınız olursa lütfen bana bildirin.