通过倾斜输出帖子与wp_Query的麻烦

时间:2017-10-09 16:09:54

标签: php wordpress shortcode

你好我试图让这个wp_query循环工作,但得到的错误最终意外,虽然另一个类似的lopp可以输出最近的新闻。请指教。第一个循环用于输出来自" news"类别。

Parse error: syntax error, unexpected 'endwhile' (T_ENDWHILE)
add_shortcode( 'faq_all', 'FAQ_all_function' );

function FAQ_all_function( $atts ) { 

    $query = new WP_Query( array(
   'category_name' =>'FAQ',
    'posts_per_page' => -1,
    'order' => 'ASC',
    'orderby' => 'title',
) );
if ( $query->have_posts() ) { ob_start(); ?>
<div class="col-lg-12 col-xs-12 faq"><?php
    while ( $query->have_posts() ) ; $query->the_post();
?>
<article><h5><a href="<?php the_permalink() ?>">  the_title()  </a></h5>
<div class="post-text">  the_content()   <br>
<div class="inner-height collapse" id="<?php the_ID() ?>"></div>
<div class="inner-height-long collapse" id="<?php the_ID() ?>"></div>
<button class="btn transparent" type="button" data-toggle="collapse" data-target="#<?php  the_ID()  ?>" aria-expanded="true" aria-controls="<?php  the_ID()  ?>"><i class="icon-chevron-down"></i>Открыть полность</button>
</div>
    </article><?php
    ?>     
 </div>  <?php 
 endwhile;  ob_get_clean(); wp_reset_postdata(); 

}
}

这是正常输出常见问题类别的工作循环。您可以将两个循环检查为工作考试但第二个基于wp-&gt;查询requset到wp数据库是完全可行的 输出基于php文档的缓冲片段并将其打印出来。

add_shortcode( 'faq1', 'FAQ_function1' );
function FAQ_function1( $atts , $faq1) {
/*start buffering content with nulled variable t the start of the loop*/
$faq1=null;
    $query = new WP_Query( array(
       'category_name' =>'FAQ',
        'posts_per_page' => -1,
        'order' => 'ASC',
            'cat' => '3',
        'orderby' => 'title',
    ) );
    if ( $query->have_posts() ) { ob_start();
?>
<div class="col-lg-6 col-xs-12"> 

            <?php while ( $query->have_posts() ) :static $counter = 0; $query->the_post();
$count = $query->post_count;
if ( $counter  > ($count/2)):
 ?>
 <article>
                <h5 href="<?php the_permalink(); ?>"><?php the_title(); ?></h5>
<div class="post-text"><?php the_content(); ?></div>
        </article>

    <?php endif;
          $counter++;   
           endwhile; ?> </div> <?php  return ob_get_clean();
/*start buffering content with nulled variable of the start of the loop. Finished with content - outputting. */

         wp_reset_postdata(); ?>


    <?php 

}

也许这是一个错过的胸罩,但眼睛看到什么是不正确的疼痛:

2 个答案:

答案 0 :(得分:0)

用以下代码替换您的代码:

add_shortcode( 'faq_all', 'FAQ_all_function' );

function FAQ_all_function( $atts ) { 

    $query = new WP_Query( array(
   'category_name' =>'FAQ',
    'posts_per_page' => -1,
    'order' => 'ASC',
    'orderby' => 'title',
) );
if ( $query->have_posts() ) { ob_start(); ?>
<div class="col-lg-12 col-xs-12 faq"><?php
    while ( $query->have_posts() ): $query->the_post();
?>
<article><h5><a href="<?php the_permalink() ?>"><?php  the_title();  ?></a></h5>
<div class="post-text"><?php  the_content();   ?><br>
<div class="inner-height collapse" id="<?php the_ID() ?>"></div>
<div class="inner-height-long collapse" id="<?php the_ID() ?>"></div>
<button class="btn transparent" type="button" data-toggle="collapse" data-target="#<?php  the_ID()  ?>" aria-expanded="true" aria-controls="<?php  the_ID()  ?>"><i class="icon-chevron-down"></i>Открыть полность</button>
</div>
    </article><?php
    ?>     
 </div> 
 <?php 

endwhile; 
ob_get_clean();
wp_reset_postdata(); 
}
}

你需要替换';'在这里使用':':

while ( $query->have_posts() );    $query->the_post();

你也没有在php标签中包含一些函数。

答案 1 :(得分:0)

while ( $query->have_posts() ) ;

我认为应该是冒号而不是分号。

顺便说一句:我强烈建议不要使用该语法功能。使用大括号。它们使阅读代码更容易(缩进,btw也是如此),每个具有基本语法高亮功能的编辑器都可以匹配它们,并且它们不是特定于php的东西,不熟悉php的人会绊倒。