-1

所以我遇到了一个奇怪的问题,我知道它在数组值方面按我期望的那样工作,但是 _html 变量返回类似 string(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->_html 返回空。

当我 var_dump($this->_html); 我得到一个空字符串。有人可能会问“你是否进入了你在做什么 $this->_html .= 'some content'; ?答案是肯定的,我是,但字符串看起来是空的。

所以我求助于你们来帮助我看看我在这里做错了什么。

4

1 回答 1

0

好吧,所有你称之为the_title()andthe_author_meta('display_name')the_post_thumbnailand的地方the_content()都是错误的。这些导致输出,它们不返回字符串。

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

于 2013-02-03T02:32:07.157 回答