所以我遇到了一个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('« Older Entries');
previous_posts_link('Newer Entries »');
$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。='某些内容';?答案是肯定的,我的是,字符串似乎是空的。
所以我转向你们,帮助我看看我在这里做错了什么。
答案 0 :(得分:0)
好吧,您调用the_title()
和the_author_meta('display_name')
以及the_post_thumbnail
和the_content()
等内容的所有地方都是错误的。那些导致输出,它们不返回字符串。
而且,如果不知道你在哪里var_dumping数据,就不可能说出预期的结果是什么。