Как отобразить записи определенной категории используя пользовательский запрос в WordPress?

30 сент. 2014 г., 11:11:26
Просмотры: 27.8K
Голосов: 1

Привет, я хочу отобразить определенную категорию через пользовательский запрос в WordPress. Мой код работает нормально и получает последние 4 записи, но теперь я хочу получить записи из определенной категории. Мой код ниже, спасибо:

global $wpdb;

$posts = $wpdb->get_results('SELECT ID, post_title AS title, post_excerpt AS excerpt FROM '.$wpdb->posts.' WHERE post_type = "post" AND post_status = "publish" ORDER BY post_date DESC LIMIT 4');

А вот мой полный код:

global $wpdb;

$posts = $wpdb->get_results('SELECT ID, post_title AS title, post_excerpt AS excerpt FROM '.$wpdb->posts.' 
 WHERE  post_type = "post" AND post_status = "publish" ORDER BY post_date  cat = "category_id" DESC LIMIT 4');

$items = array();
foreach ($posts as $post) {

    // Создаем массив для хранения данных записи
    $item = array();
    $item['title'] = get_the_title($post->ID);
    $item['url'] = get_permalink($post->ID);
    $item['desc'] = $post->excerpt;
    $item['image'] = wp_get_attachment_url( get_post_thumbnail_id($post->ID));
    $item['thumb'] = get_post_meta($post->ID, 'Thumbnail', true);
    $items[] = $item;
}

return $items;

Теперь я хочу добавить финальный вывод, смотрите код ниже:

" id="nav-fragment-"> "> " class="ui-tabs-panel" style=""> " alt="" /> " >

" >Читать далее

5
Комментарии

Настоятельно рекомендуется использовать wp_query для получения записей WordPress. Проверьте это

Nilambar Sharma Nilambar Sharma
30 сент. 2014 г. 11:44:06

@Nilambar я использовал это, но безрезультатно, не поможете?

Jono Jono
30 сент. 2014 г. 11:45:53

ты имеешь в виду "отображение записей определенной категории" ??

Zammuuz Zammuuz
30 сент. 2014 г. 11:46:16

да, это то, что мне нужно

Jono Jono
30 сент. 2014 г. 11:50:17

Вот мой классический ответ: http://wordpress.stackexchange.com/questions/93798/show-last-5-posts-from-specific-category/93805#93805

Nathan Powell Nathan Powell
30 сент. 2014 г. 12:04:38
Все ответы на вопрос 2
0

рекомендуемый способ:

    <?php
    $query = new WP_Query('category_name=Category&posts_per_page=4');
    if($query->have_posts()) : while($query->have_posts()) : $query->the_post();
    if (has_post_thumbnail()) {
        ?>
            <a href="<?php the_permalink(' ') ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail(); ?></a>
        <?php
    }
    ?>
    <h2><a href="<?php the_permalink(' ') ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h2>
    <?php
    the_excerpt(); // или the_content(); для полного содержимого записи
    endwhile;endif;
?>
30 сент. 2014 г. 11:54:14
2

Всё хорошо, самое первое предложение от @Ammu тоже работало. Мне нужно было изменить значения из массива, чтобы они соответствовали условию, вот код:

global $wpdb;
$cat_id = 10; 

$posts = $wpdb->get_results("SELECT 
ID, post_title AS title, post_excerpt AS excerpt FROM $wpdb->posts p
JOIN $wpdb->term_relationships tr ON (p.ID = tr.object_id)
JOIN $wpdb->term_taxonomy tt ON (tr.term_taxonomy_id = tt.term_taxonomy_id)
JOIN $wpdb->terms t ON (tt.term_id = t.term_id)
WHERE p.post_type='post'
AND p.post_status = 'publish'
AND tt.taxonomy = 'category'
AND t.term_id = $cat_id
ORDER BY post_date DESC LIMIT 4");
30 сент. 2014 г. 14:31:48
Комментарии

Следует отметить, что обход API и прямой запрос к базе данных может иметь непредвиденные последствия, так как вы лишаетесь всех возможностей, которые предоставляет API — фильтры, действия и т.д. Всегда следует использовать API (WP_Query), когда это возможно, вместо прямых SQL-запросов.

Milo Milo
30 сент. 2014 г. 19:55:12

Что делать, если я хочу отобразить 2 конкретные рубрики?

Jono Jono
10 дек. 2014 г. 11:53:57