2017-08-04 26 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,我需要顯示所有帖子類型 –