1

我已经在我的根目录中安装了 wordpress,在子目录中安装了 codeigniter,一切正常。我可以调用 CI 控制器等等。但是,我也想使用相同的 wordpress 主题。例如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没有在 wordpress 主题文件中被读取。我什至尝试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 的 loader 对象中传递的所有变量。

于 2013-01-22T07:21:00.280 回答
0

好吧,经过很多,最后阅读http://www.php.net/manual/en/language.variables.scope.php#98811,发现我需要$ci_titleglobal调用之前一样声明我的get_header()。现在我的代码如下所示:

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 功能。

于 2012-04-30T20:47:24.673 回答