2

投稿の抜粋を使用して画像のサムネイルを保持する古い関数があります。それは少しハッキーで、長い間機能していました。

ここで、投稿の抜粋を使用して、抜粋を作成する必要があります。そのため、この関数を更新して、代わりに投稿の添付ファイルから直接画像の src 情報を取得することを検討しています。

質問:

$before_sql以下の SQL コードを更新して、投稿の添付ファイルの最初の添付画像を取得するにはどうすればよいですか?

コード:

(残りは自分でクリーンアップする必要があるため、SQL 部分だけを気にしていると思いますか?) コード セクションは他にもありますが、ここにすべてを貼り付けるのではなく、このスニペットで十分です。

$before_sql = "SELECT ID, post_title, post_excerpt FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' and post_date < '$cur_post_date' ORDER BY post_date DESC LIMIT $thumbnum";
$before_results = $wpdb->get_results($before_sql);
if($before_results) {
    foreach ($before_results as $before_result) {
        $post_title = stripslashes($before_result->post_title);
        $permalink = get_permalink($before_result->ID);
        $post_excerpt = ($before_result->post_excerpt);
        $output="<div class=\"thumbnails\"><a href=\"" . $permalink . "\" title=\"Permanent Link: " . $post_title . "\">" . $post_excerpt . "</a><br />&lsaquo;</div>\n         " . $output;
    }
}
4

1 に答える 1

3

1 つのクエリで投稿の最初の添付ファイルを取得するには、次の方法で実行できます

SELECT *,
(SELECT guid FROM `wp_posts`  WHERE post_type ='attachment' AND post_parent=wp.`ID` ORDER BY post_date ASC LIMIT 1 ) AS attachment
 FROM `wp_posts` wp 

ORDER BY post_date ASCは、最新のアップロードされた画像が必要な場合、最初の画像を取得します。単純に DESC ORDER BY post_date DESCを使用できます。

ここにあなたの質問があります

$before_sql = "SELECT ID, post_title, post_excerpt,
(SELECT guid FROM $wpdb->posts  WHERE post_type ='attachment' AND post_parent=wp.`ID`
ORDER BY post_date ASC LIMIT 1 ) AS attachment
FROM $wpdb->posts wp WHERE wp.post_status = 'publish' AND wp.post_type = 'post'
and wp.post_date < '$cur_post_date' ORDER BY wp.post_date DESC LIMIT $thumbnum";

それは私にとってはうまくいきます

これは、添付ファイルがある投稿のみを取得するクエリです

$before_sql = "SELECT ID, post_title, post_excerpt,
(SELECT guid FROM $wpdb->posts  WHERE post_type ='attachment' AND post_parent=wp.`ID`
ORDER BY post_date ASC LIMIT 1 ) AS attachment
FROM $wpdb->posts wp WHERE wp.post_status = 'publish' AND wp.post_type = 'post'
and wp.post_date < '$cur_post_date' HAVING attachment IS NOT NULL ORDER BY wp.post_date DESC LIMIT $thumbnum";
于 2013-08-09T16:00:36.557 に答える