sorgudan belirli bir kategori ortadan kaldırmak için nasıl

5 Cevap php

ben bu kod ile sunulmuştur. kod veritabanından son 10 wordpress mesajların başlık başlıklarını görüntüler. ne yapmam gerekir bu belirli bir kategori ortadan kaldırmaktır. Herkes lütfen yardım edebilir?

<?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++;
    						}	

    				}


    				?>

5 Cevap

: Ya da ikinci bir döngü, bu gibi bir şey kullanabilirsiniz

<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>

bir kez daha WP 2.8.x. Iyi bilgi bir sürü burada: WordPress loop documentation

İhtiyacınız ve ekstra eklemek ve WHERE yan tümcesine değilsiniz kategoriyi belirleyin:

AND post_category != 3

Bunu 2 yerlerden birini yapabilirsiniz. En verimli sorguda bunu yapmak için:

 $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' ";

Eğer sonuç almak zaman bunu yapmak için başka bir yer, tüm sonuçlar gerekiyor, ama başka bir yerde istenmeyen kategorisini kullanmak istiyorum nedense eğer,:

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

'Noticeboard' i ortadan kaldırmak istediğiniz kategorinin adıdır. ben bu yazarsanız, bir ayrıştırma hatası Dispalys.

Because you must insert the category ID in the query, not the category name.
To get that, just watch in the database wp_categories table.

Some links about wordpress database:
http://blog.kapish.co.in/2008/01/18/wordpress-database-schema/
http://wpbits.wordpress.com/2007/08/08/a-look-inside-the-wordpress-database/

Anyway, I think it's more hard than this. Look at post2cat table. So, you have to do a subquery.

Ben Kullandığınız WP sürümü emin değilim, bu yüzden 'cevap' birkaç uyarılar vardır.

İhtar 1: Bu daha bir işaretçi gibi, tam bir cevap değil

İhtar 2: Aşağıdaki sorgu WP 2.8.x ile çalışır YMMV yüzden

Aşağıdaki sorgu geri kategorilerine Mesajları bağlantı nasıl gösterir. Sen onun KODU istemiyorum kategoriyi dışlamak için mySQL operatör IN DEGIL kullanabilirsiniz

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

Satır sonları ve girinti kendine özgü, ama (umarım) daha kolay, bu sorgu ile neler olduğunu görmek için yapmak.

Bu yardımcı olur umarım.