2012-04-30 11 views
1

我在我的根目錄下安裝了wordpress,在子目錄下安裝了codeigniter,一切正常。我可以打電話給CI控制器和所有。不過,我也想使用相同的WordPress主題。例如:get_header(),get_sidebar()get_footer()將codeigniter變量傳遞給wordpress主題文件

一個示例用法是傳入我的codeigniter頁面標題,以便wordpress在訪問我的codeigniter端時不顯示Page not found標題。我有以下代碼:

甲CI控制器:

public function index(){ 
    $data['ci_title'] = 'some title'; 
    $this->load->view('header', $data); 
} 

的CI視圖(header.php文件):

<?php get_header(); ?>;

WordPress的主題文件(header.php文件):

<title> 
    <?php 
     if($ci_title) echo $ci_title else wp_title(''); 
    ?> 
</title> 

現在的問題是我的$ci_title沒有被讀取的wordpress主題文件。我甚至嘗試將globlal $ci_title放在get_header()函數中,但是它再次調用一些load_template()函數。

有沒有簡單的方法將CI變量傳遞給wordpress主題文件?

+0

我可以問,你這樣做的目的是什麼? –

+0

@KemalFadillah我正在製作一個網站,其主要部分是一個CMS,但它也有一些其他數據需要檢索並顯示給訪問者使用搜索/排序功能。 CI將用於訪問該數據,而我不想在CI中編寫自定義博客/ CMS。 – WebNovice

+0

我不知道一個簡單的方法,但你可以根據渲染的頁面源代碼創建一個頭文件。但是,你必須在每次更新頭文件時更新該文件,這是一件痛苦的事情,但如果你不必這樣做,那麼這不是問題。 – Rooster

回答

0

確定經過了很多,最後閱讀http://www.php.net/manual/en/language.variables.scope.php#98811,發現我需要在致電get_header()之前聲明我的$ci_titleglobal。現在,我的代碼如下所示:

CI查看文件(header.php文件):

global $ci_title; 
get_header(); 

WP功能wp_title()general-template.php

function wp_title($sep = '&raquo;', $display = true, $seplocation = '', $ci_title = '') { 
global $wpdb, $wp_locale, $ci_title; 
//existing code.. and at the end 
if($ci_title != ''){ 
$title = $ci_title; 

不知道這是否是在正確的方式這樣做,因爲我只是PHP的初學者,但現在它符合我的目的。如果有更好的方法,那會很好,這可以讓我避免修改wordpress的功能。

1

你並不需要去修改核心文件。你所要做的只是簡單地添加以下幾行代碼在你的header.php

$CI = &get_instance(); 
echo $CI->load->get_var('ci_title'); 

你會得到CI的裝載機對象傳遞的所有變量。