0

我仍然只处于 MySQL 的初学者阶段,并且想知道如何为此添加特定类别。

SELECT DISTINCT DATE_FORMAT(post_date, '%b') AS month , 
  MONTH(post_date) as numMonth, YEAR( post_date ) AS year, 
  COUNT( id ) as post_count 
FROM $wpdb->posts 
WHERE post_status = 'publish' and post_date <= now( ) and post_type = 'post' 
GROUP BY month , year ORDER BY post_date DESC

我发现此代码用于获取类别uncategorized...

SELECT * FROM wp_posts p 
LEFT OUTER JOIN wp_term_relationships r ON r.object_id = p.ID     
LEFT OUTER JOIN wp_terms t ON t.term_id = r.term_taxonomy_id 
WHERE p.post_status = 'publish' AND p.post_type = 'post' 
  AND t.slug = 'uncategorized'

我试过UNION ALL了,但这阻止了任何东西的出现。如果我试图学习这些东西,也许我走得太远了,因为我什至无法让查询的第二部分自行工作。

谢谢

编辑:作为对第一个响应的回应,请添加此代码以进一步解释我在做什么,它是一个档案小部件,每年然后每月显示。我还没有找到一种简单的方法来做到这一点,并求助于“更好的档案小部件”。这是他们已包含在我希望更改的文件中的代码。如果有使用query_postsId 的更简单方法,请对此持开放态度。

global $wpdb;
    $prevYear = "";
    $currentYear = "";
    if ( $months = $wpdb->get_results( "SELECT DISTINCT DATE_FORMAT(post_date, '%b') AS month , MONTH(post_date) as numMonth, YEAR( post_date ) AS year, COUNT( id ) as post_count FROM $wpdb->posts WHERE post_status = 'publish' and post_date <= now( ) and post_type = 'post' GROUP BY month , year ORDER BY post_date DESC" ) ) {
    echo '<ul>';
        $count = 0;
        foreach ( $months as $month ) {

            $currentYear = $month->year;
            if ( ( $currentYear != $prevYear ) && ( $prevYear != "" ) ) { echo "</ul></li>"; }
            if ( $currentYear != $prevYear ) {  
             $count++ ?> 
            <li class="baw-year"><a href="<?php echo get_year_link( $month->year ); ?>"><?php echo $month->year; echo ' ('.$month->post_count . ')' ; ?> </a>
            <ul class="baw-months">
            <?php
            }   ?>
            <li class="baw-month"><a href="<?php echo get_month_link( $month->year, $month->numMonth ); ?>"><?php echo date('F', strtotime ($month->month)); ?><?php /*echo ' ' . $month->year;  */ ?></a></li>
            <?php
            $prevYear = $month->year;
        }//end foreach
    }
    ?>
    </ul></li>
4

2 回答 2

0

您是否有理由不使用query_posts()?(您可以在查询中使用的参数在这里。)使用 query_posts 更安全一些(并且已经内置在 WordPress 中) - 使用这样的自定义查询,您需要确保使用 $wpdb->prepare 等. 以确保无法注入查询。但是使用 query_posts,您可以添加分类法、帖子类型、帖子状态、排序方式、日期/时间等,它会为您编写查询并提取您需要的内容。

于 2012-10-30T13:08:25.530 回答
-1
  1. 尝试使用此代码显示类别帖子 -

    get_results(" SELECT * FROM $wpdb->posts 左连接 $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) 左连接 $wpdb->term_taxonomy ON ($wpdb->term_relationships .term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->term_taxonomy.taxonomy = 'category' AND $wpdb->term_taxonomy.term_id = 3**(你的类别id)** ORDER BY post_date ASC "); ?>
  2. 您可以检查“term_taxonomy.term_id”的“wp_terms”表,即。您的类别 ID。

  3. 此外,您可以通过单击管理面板中特定类别名称下方的编辑按钮来获取您的类别 ID,您将在 url 中看到 id。
于 2013-06-06T09:15:31.207 回答