Запросы WordPress миниатюры - PullRequest
       2

Запросы WordPress миниатюры

0 голосов
/ 31 августа 2010

Я пытаюсь получить миниатюрные метаданные для постов в моем блоге WordPress вместе с их категорией и некоторыми другими данными.Данные эскиза сериализуются, и я расскажу их позже.

Вот мой запрос:

    SELECT wpostmeta.meta_value AS url,
    wposts.post_content, wposts.post_title, wposts.post_status, wposts.post_name,
    cat_terms.name AS category_name, cat_terms.term_id AS category_id,
    ttable.meta_value AS thumb_data
    FROM `wp_postmeta` AS wpostmeta,
    `wp_posts` AS wposts
    INNER JOIN wp_term_relationships AS cat_term_relationships ON (wposts.ID = cat_term_relationships.object_id)
    INNER JOIN wp_term_taxonomy AS cat_term_taxonomy ON (cat_term_relationships.term_taxonomy_id = cat_term_taxonomy.term_taxonomy_id AND cat_term_taxonomy.taxonomy = 'category')
    INNER JOIN wp_terms AS cat_terms ON (cat_term_taxonomy.term_id = cat_terms.term_id)
    LEFT JOIN `wp_postmeta` AS ttable ON (wposts.ID = ttable.post_id AND ttable.meta_key = '_wp_attachment_metadata')
    WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_key = 'url'
    AND wposts.post_type = 'post'

Все работает, за исключением части вложения.'thumb_data' имеет значение NULL.

Не могли бы вы помочь мне исправить это?

Ответы [ 2 ]

1 голос
/ 08 сентября 2010

Этот вопрос решил мою проблему:

$sql = "SELECT wposts.ID AS ID, thumbposts.ID AS thumbposts_ID,
        postmeta.meta_value AS url,
        wposts.post_content, wposts.post_title, wposts.post_status, wposts.post_name,
        cat_terms.name AS category_name, cat_terms.term_id AS category_id,
        thumb.meta_value AS thumb_data

        FROM `wp_postmeta` AS postmeta,
        `wp_posts` AS thumbposts,
        `wp_postmeta` AS thumb,
        `wp_posts` AS wposts

        INNER JOIN wp_term_relationships AS cat_term_relationships ON (wposts.ID = cat_term_relationships.object_id)
        INNER JOIN wp_term_taxonomy AS cat_term_taxonomy ON (cat_term_relationships.term_taxonomy_id = cat_term_taxonomy.term_taxonomy_id AND cat_term_taxonomy.taxonomy = 'category')
        INNER JOIN wp_terms AS cat_terms ON (cat_term_taxonomy.term_id = cat_terms.term_id)

        WHERE wposts.ID = postmeta.post_id
        AND postmeta.meta_key = 'url'

        AND thumbposts.post_parent = wposts.ID
        AND thumbposts.post_type = 'attachment'

        AND thumb.post_id = thumbposts.ID
        AND thumb.meta_key = '_wp_attachment_metadata'

        AND wposts.post_type = 'post'";

    if($filter == 1){
        $sql .= " AND cat_terms.term_id = '1'";
    }
    if($filter == 2){
        $sql .= " AND cat_terms.term_id = '3'";
    }

    $sql .= " GROUP BY wposts.ID
        ORDER BY wposts.post_date ASC";
0 голосов
/ 01 сентября 2010

Можете ли вы объяснить, чего именно вы пытаетесь достичь - в огромном количестве ситуаций нет реальной необходимости обращаться непосредственно к базе данных.

Например, вы можете использовать get_posts с 'post_type' => 'attachment' и 'post_mime_type' => 'image', чтобы получить вложения к изображению, а затем вывести метаданные, и есть много встроенных функций для работы с изменением размера, отображением и обрезка миниатюр, таких как get_post_thumbnail () и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...