我收到了这段代码。该代码显示数据库中最新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 :(得分:0)
确定您不需要的类别,并在WHERE子句中添加额外的AND:
AND post_category != 3
答案 1 :(得分: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') {
答案 2 :(得分:0)
'Noticeboard'是我要消除的类别的名称。但如果我这样写,那就显示出一个解析错误。
因为您必须在查询中插入类别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表。 所以,你必须做一个子查询。
答案 3 :(得分:0)
我不确定您使用的是哪个WP版本,因此这个'回答'有一些注意事项。
警告1:这不是一个完整的答案,更像是一个指针
警告2:下面的查询适用于WP 2.8.x,因此YMMV
下面的查询显示了如何将帖子链接回其类别。您可以使用NOT IN 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
换行和缩进是特殊的,但(希望)可以让您更轻松地查看此查询的内容。
我希望这会有所帮助。
答案 4 :(得分: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