2

WordPressデータベースの外部PHPファイルから手動でクエリを実行しようとしていますが、タイトル、コンテンツ、最後の(または最初の)画像を含む最後の3つの投稿を抽出し、その画像のwp_postmetaからサムネイルのURLを取得します。

タイトル、コンテンツ、画像IDを取得できましたが、画像のサムネイルを取得するために別の結合を追加する方法がわかりませんでした。これは私が持っているものです:

SELECT a.post_title title, max(c.guid) img_url, a.ID id
FROM wp_posts a

LEFT JOIN
(select post_parent, max(post_date_gmt) as latest_image_date from wp_posts
where post_type='attachment' GROUP BY post_parent) b 
on a.id=b.post_parent

LEFT JOIN wp_posts c
on c.post_parent=a.id 
and c.post_type='attachment' 
and b.latest_image_date = c.post_date_gmt where c.guid IS NOT NULL

GROUP BY a.post_title ORDER BY a.ID

画像のサムネイルは次のwp_postmeta (meta_id, post_id, meta_key, meta_value)ように表に表示されます。58435, 6711, _wp_attachment_metadata, a:6:{s:5:"width";s:4:"1024";s:6:"height";s:3:"683"...

画像IDを取得していることがわかりました。c.id必要なのは、フィールドのJOINデータを取得するための別の方法です。wp_postmetameta_key="_wp_attachment_metadata" and post_id=c.id

誰かがクエリを完了するのを手伝ってくれますか?ありがとう!

4

3 に答える 3

0

時間を節約し、ワードプレスの機能を使用する必要があります。

  • プラグインを作る
  • または、スクリプトに wp-load.php を含めます

https://wordpress.stackexchange.com/questions/47049/what-is-the-correct-way-to-use-wordpress-functions-outside-wordpress-files

于 2012-04-18T07:51:51.730 に答える
-1

最後に、水平方向の機能を追加するため、別のソリューション (少なくとも一時的) を選択しました。完全に空のカスタム ページを作成しました (空にするために、いくつかのアクション/フィルターを手動で削除する必要がありました)。 ) データを json 形式でエクスポートします。そのデータを取得し、現在のサイトで必要に応じて印刷します。

<?php
$args= array(
    'posts_per_page' => 6
    //if there are sticked posts they will also appear beside the 2 if we run this in a separate php file, not included in theme
);
$ii = 0;
query_posts($args);
if( have_posts() ) :


  while ( have_posts() ) : the_post();

    $permalink = get_permalink();
    $titlu = get_the_title();
    $excerpt = get_the_excerpt();

    $args = array(
        'post_type'      => 'attachment',
        'post_parent'    => $post->ID,
        'post_status'    => 'inherit',
        'numberposts'    => 1
    );
    $images = get_posts($args);
    $j = 1;
        foreach ($images as $i) :

        $ii++;//am preluat doar o poza, e ok numaratoarea
        $j++;
        $poza_thumb = wp_get_attachment_image_src($i->ID, 'thumbnail');
        $arr[$ii] = array('titlu' => $titlu, 'url' => $permalink, 'poza_thumb' => "".$poza_thumb[0], 'poza_width' => "".$poza_thumb[1], 'poza_height' => "". $poza_thumb[2], 'articol' => $excerpt);

        endforeach;

    endwhile;

    echo json_encode($arr);//we send json as array
else :

endif;?>
于 2012-04-19T15:02:26.487 に答える