1

ルートディレクトリにwordpressをインストールし、サブディレクトリにcodeigniterをインストールしましたが、すべて正常に動作します。CIコントローラーとすべてを呼び出すことができます。ただし、同じワードプレスのテーマも使用したいと思います。例:get_header()、、get_sidebar()およびget_footer()

Page not found使用例は、codeigniterページのタイトルを渡して、wordpressがcodeigniter側にアクセスしたときにタイトルを表示しないようにすることです。私は次のコードを持っています:

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のワードプレスのテーマファイルで読まれていないことです。関数を入れてみgloblal $ci_titleましたget_header()が、再びload_template()関数を呼び出します。

CI変数をWordPressテーマファイルに渡す簡単な方法はありますか?

4

2 に答える 2

1

実際に行ってコア ファイルを変更する必要はありません。あなたがしなければならないことは、header.php に次のコード行を追加するだけです。

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

CIのローダーオブジェクトに渡されたすべての変数を取得します。

于 2013-01-22T07:21:00.280 に答える
0

多くのことを経て、最終的にhttp://www.php.net/manual/en/language.variables.scope.php#98811を読んだ後、呼び出す前に$ci_titleasを宣言する必要があることがわかりました。今私のコードは次のようになります。globalget_header()

CI ビュー ファイル (header.php):

global $ci_title;
get_header();

wp_title()でのWP 関数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の初心者なので、それが正しい方法かどうかはわかりませんが、今のところそれは私の目的を果たしています. より良い方法があればいいのですが、ワードプレスの機能を変更することを避けることができます。

于 2012-04-30T20:47:24.673 に答える