2009-07-26 47 views
0

我已經看到了這段代碼。該代碼顯示數據庫中最新的10個WordPress帖子的標題標題。我需要做的是從這個中消除一個特定的類別。誰能幫忙?如何從查詢中刪除特定類別

<?php require_once 'news/wp-config.php'; 
        $howMany = 0; 
        $query ="SELECT `ID`, `post_title`,'post_category', `guid`,SUBSTRING_INDEX(`post_content`, ' ', 100) AS `post_excerpt` FROM $wpdb->posts WHERE `post_status`= \"publish\" AND `post_type` = \"post\" "; 
        $posts = $wpdb->get_results($query); 
        $posts = array_reverse($posts); 
        foreach($posts as $post) 
        { 
          if($howmany<10) 
          { 
           $link = $post->guid; 
           echo "<li><a target='_blank' href='$link'>$post->post_title</a></li>"; 
           $howmany++; 
          } 

        } 


        ?> 

回答

0

或者,你可以使用第二個循環,這樣的事情:

<div> 
    <h3>Fresh Posts</h3> 
    <ul> 
    <?php 
     $my_query = new WP_Query("cat=-3&order=DESC&posts_per_page=10"); 

     echo "<pre>"; print_r($my_query->query_vars); echo "</pre>"; // shows the variables used to parse the query 
     echo "<code style='width: 175px;'>"; print_r($my_query->request); echo "</code>"; // shows the parsed query 

    while ($my_query->have_posts()) : $my_query->the_post(); //standard loop stuff 
    $do_not_duplicate[] = $post->ID;?> 

     <li id="post-<?php the_ID(); ?>"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li> 

    <?php endwhile; ?> 
    </ul> 
</div> 

再次WP 2.8.x.很多很好的信息在這裏:WordPress loop documentation

0

確定你不需要的類別和增加額外的和你的WHERE子句:

AND post_category != 3 
+0

似乎沒有工作。 – amit 2009-07-26 12:22:54

+0

呃 - 你是否真的嘗試過,還是用'布告欄'替換3? where'post_status` = \「publish \」AND`post_type` = \「post \」AND post_category!= \「Noticeboard \」「 – 2009-07-26 12:38:41

+0

當然我做過了:) – amit 2009-07-26 19:00:32

0

你可以做到這一點無論是2位。最有效的是做查詢:

$query ="SELECT ID, post_title, post_category, guid, SUBSTRING_INDEX(post_content, ' ', 100) AS `post_excerpt` 
FROM $wpdb->posts 
WHERE post_status= 'publish' 
    AND post_type = 'post' 
    AND post_category!= 'unwanted string' "; 

其他地方去做,如果由於某種原因,你需要所有的結果,但要使用不必要的類別的地方,就是當你檢索結果:

if($howmany<10 && post['post_category']!='unwanted string') { 
0

「告示欄」是我想要消除類的名稱。但是如果我寫這個,它會顯示一個分析錯誤。

因爲您必須在查詢中插入類別ID,而不是類別名稱。
爲了解決這個問題,只需在數據庫wp_categories表中查看即可。

關於WordPress數據庫中的一些鏈接:
http://blog.kapish.co.in/2008/01/18/wordpress-database-schema/
http://wpbits.wordpress.com/2007/08/08/a-look-inside-the-wordpress-database/

無論如何,我認爲這是比這更硬。看post2cat表。 所以,你必須做一個子查詢。

0

我不確定你使用的是哪個WP版本,所以這個'答案'有一些注意事項。

買者1:這不是一個完整的答案,更像是一個指針

買者2:下面的查詢與WP 2.8.x工作這麼YMMV

下面的查詢顯示瞭如何鏈接回員額他們的類別。您可以使用不能在MySQL中操作,以排除你不要被它的ID所需的類別

SELECT 
    wp_posts.* 
FROM 
    wp_posts 
INNER JOIN 
    wp_term_relationships 
ON 
    (wp_posts.ID = wp_term_relationships.object_id) 
INNER JOIN 
    wp_term_taxonomy 
ON 
    (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id) 
WHERE 
    wp_term_taxonomy.taxonomy = 'category' 
AND 
    wp_term_taxonomy.term_id NOT IN ('3') 
AND 
    wp_posts.post_type = 'post' 
AND 
    (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'future') 
GROUP BY 
    wp_posts.ID 
ORDER BY 
    wp_posts.post_date 
DESC 

換行符和縮進則是千變萬化的,但是(希望)使您更容易看到什麼是怎麼回事這個查詢。

我希望這會有所幫助。

相關問題