_html返回一个空字符串?

时间:2013-02-02 23:50:09

标签: php wordpress wordpress-theming

所以我遇到了一个bizzar问题,其中我知道正在按照数组值的方式工作,但_html变量返回类似字符串(29)“”的内容,据我所知,这意味着29个空格,因为空格算作字符(随意纠正我)。

任何方式,班级:

<?php

class AisisCore_Template_Helpers_Loop{

    protected $_options;

    protected $_wp_query;

    protected $_html = '';

    public function __construct($options = array()){
        global $wp_query;

        if(isset($options)){
            $this->_options = $options; 
        }

        if(null === $this->_wp_query){
            $this->_wp_query = $wp_query;
        }
    }

    public function init(){}

    public function loop(){
        if(isset($this->_options)){
            if(isset($this->_options['query'])){
                $this->_query_post($this->_options['query']);
            }elseif(isset($this->_options['type']) && $this->_options['type'] == 'single'){
                $this->_single_post();
            }else{
                $this->_general_wordpress_loop();
            }
        }else{
            $this->_general_wordpress_loop();
        }
    }

    protected function _general_wordpress_loop(){
        if($this->_wp_query->have_posts()){
            while($this->_wp_query->have_posts()){
                $this->_wp_query->the_post();
                the_excerpt();
            }
        }
    }

    protected function _query_post($query){
        $empty_query = $this->_wp_query;
        $wp_query = new WP_Query($query);

        if($wp_query->have_posts()){
            while($wp_query->have_posts()){
                $wp_query->the_post();
                the_excerpt();
            }
        }

        next_posts_link('&laquo; Older Entries'); 
        previous_posts_link('Newer Entries &raquo;');

        $wp_query = $empty_query;
    }

    protected function _single_post(){
        if($this->_wp_query->have_posts()){
            while($this->_wp_query->have_posts()){
                $this->_wp_query->the_post();

                if(isset($this->_options['wrapper'])){
                    $this->_html .= '<div ';

                    if(isset($this->_options['wrapper']['class'])){
                        $this->_html .= 'class="'.$this->_options['wrapper']['class'].'"';
                    }elseif(isset($this->_options['wrapper']['id'])){
                        $this->_html .= 'class="'.$this->_options['wrapper']['id'].'"';
                    }

                    $this->_html .= ' >';
                }

                if(isset($this->_options['title_header'])){
                    $this->_html .= '<'.$this->_options['title_header'].'>';
                    the_title();
                    $this->_html .= '</'.$this->_options['title_header'].'>';
                }else{
                    the_title();
                }

                $this->_html .= '<a href="'.get_author_posts_url(get_the_author_meta( 'ID' )).'">'.the_author_meta('display_name').'</a>';
                the_date();
                if(isset($this->_options['image'])){
                    if(isset($this->_options['size']) && isset($this->_options['args'])){
                        the_post_thumbnail($this->_options['image']['size'], $this->_options['image']['args']);
                    }else{
                        the_post_thumbnail('medium');
                    }
                }

                the_content();

                if(isset($this->_options['wrapper'])){
                    $this->_html .= '</div>';
                }
            }
        }
    }

}

要关注的功能是_single_post()函数。要实例化和使用此类,我们执行以下操作:

$array = array(
    'wrapper' => array(
        'class' => 'span12'
    ),
    'title_header' => 'h1',
    'image' => array(
        'size' => 'type',
        'args' => array(
            'align' => 'centered', 
            'class' => 'thumbnail marginBottom20 marginTop20'
        )
    ),
    'type' => 'single'
);

$loop = new AisisCore_Template_Helpers_Loop($array);
$loop->loop();

因此,您可以看到我们设置了包装器div,title_header,图像属性和单个类型。问题是,我进入每个 if语句我喜欢如果这是一个包装器并且类键设置为值.. 但是$ this-&gt; _html返回空。

当我var_dump($ this-&gt; _html);我得到一个空字符串。有人可能会问:“你是否进入你所做的事情 - 这个&gt; _html。='某些内容';?答案是肯定的,我的是,字符串似乎是空的。

所以我转向你们,帮助我看看我在这里做错了什么。

1 个答案:

答案 0 :(得分:0)

好吧,您调用the_title()the_author_meta('display_name')以及the_post_thumbnailthe_content()等内容的所有地方都是错误的。那些导致输出,它们不返回字符串。

而且,如果不知道你在哪里var_dumping数据,就不可能说出预期的结果是什么。