2017-08-04 89 views
0

我想表明我的主题为WP的最后一篇文章,所以我写了这个代码:第一部分have_posts()返回false在WordPress

<?php get_header(); ?> 

<div class="content"> 

<div class="pad group"> 

    <?php get_template_part('inc/page-title'); ?> 

    <?php //echo var_dump(have_posts()); ?> 

    <?php if (have_posts()) : ?> 

     <?php if (ot_get_option('blog-standard') == 'on'): ?> 

      <?php while (have_posts()): the_post(); ?> 
       <?php get_template_part('content-standard'); ?> 
      <?php endwhile; ?> 

     <?php else: ?> 
      <div class="post-list group"> 
       <?php $i = 1; echo '<div class="post-row">'; while (have_posts()): the_post(); ?> 
        <?php get_template_part('content'); ?> 
        <?php if($i % 2 == 0) { echo '</div><div class="post-row">'; } $i++; endwhile; echo '</div>'; ?> 
      </div><!--/.post-list--> 
     <?php endif; ?> 

     <?php get_template_part('inc/front-widgets-bottom'); ?> 
     <?php get_template_part('inc/pagination'); ?> 
     <?php get_template_part('inc/picks'); ?> 

    <?php endif; ?> 

    <?php get_template_part('inc/front-widgets-top'); ?> 

</div><!--/.pad--> 

我得到的标题,在content股利我打开了一个名为pad group的容器,然后与page-title我得到的页面标题。

在这之后我检查是否有可用的后(当然也有)有if (have_posts()),但如果你看到我做的have_posts()一个var_dump,这回false在条件代码永远不会执行,事实上。

我在这里看到其他问题的同一主题,但我找不到任何解决方案。其中一些问题询问if条件未正确关闭,但我检查了所有包含的文件(也包含header),但我找不到任何问题。

有人可能比我有更好的眼睛?谢谢你的帮助。

+0

功能'have_posts()'在档案页面模板可能工作...如果你使用的存档页面模板,确保文件的命名惯例符合标准...检查'archive.php'文件中的代码 –

+0

@CrystalPaladin我忘了说这是index.php –

+0

这些帖子是否正常WordPress的帖子?或者他们是自定义帖子? coz'have_posts()'只能用于普通的wordpress文章...并且检查你的'functions.php'来检查是否有任何篡改wp查询的钩子... –

回答

-1

尝试使用自定义WP_Query。上述

// WP_Query arguments 
$args = array(
    'posts_per_page'   => '1', 
    'cat' => <CATEGORY_ID> 
); 

// The Query 
$query = new WP_Query($args); 

// The Loop 
if ($query->have_posts()) { 
    while ($query->have_posts()) { 
     $query->the_post(); 
     // do something 
    } 
} else { 
    // no posts found 
} 

// Restore original Post Data 
wp_reset_postdata(); 

代码将获取从您通过CATEGORY_ID设置类别最近的一个职位。

如果您想进一步自定义您的查询,可以使用WP_Query generator或检查WP_Query Class docs

+0

我试过你的代码,当我'var_dump($ query-> have_posts());'我得到真实的,我不明白为什么have_posts不工作 –

+0

这是因为has_posts()函数使用全局$ wp_query变量。根据您目前尝试在浏览器中打开的页面,该变量的设置不同,以及用于为浏览器生成HTML的主题中更具体的模板文件。 [这里是模板文件层次结构](https://codex.wordpress.org/images/1/18/Template_Hierarchy.png)。长话短说,一些模板文件生成查询,没有内容可以获取。 – Yurciu

+0

如果它在index.php中,请在'var_dump(have_posts());'之前调用'wp_reset_query();'并检查结果。 BTW。你不需要echo'var_dump()';) – Yurciu

0

尝试这个 -

$args = array(
    'post_type' => 'post',//or you can add custom post type 
    'order' => 'DESC' 
); 
$posts = get_posts($args); 
if(!empty($posts)){ 
    foreach($posts as $post => $post_val){ 
     echo $post_val->post_content; 
    } 
} 
+0

嗨,如果我使用post_type工作,正如我之前说过的,但我不知道为什么我需要指定此帖时有帖子 –

+0

帖子来自哪个帖子键入你想显示,如果在你的后端有两个或两个以上的自定义帖子类型,那么你必须指定 – Prince

+0

我在index.php,我需要显示所有帖子类型 –