0

各カテゴリの最新の投稿の ID を取得し、その ID を使用してメタ情報とサムネイルを取得し、対応するカテゴリの横に表示しようとしています。私はそれを行う方法がわかりません。

このコードを試してみましたが、うまくいきません:

<?php
$args=array(
  'orderby' => 'name',
  'order' => 'ASC'
  );
$categories=get_categories($args);
foreach($categories as $category) : ?>

    <?php $randpost = get_posts(
        array(
            'numberposts' => 1,
            'category' => array( get_query_var($category->id)),
        ));
    $randpostid = ($randpost->ID);
    ?>

    <?php echo '<h2 class="newsitem"><a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a> </h2> '; ?>
    <?php echo '<p>'. $category->count . ' nummer</p>'; ?>

    <strong>Stad:</strong>
    <?php $city = get_post_meta($randpostid, 'city', true); ?>
    <?php echo $city ?> 

<?php endforeach; ?>

私は何を間違っていますか?

4

2 に答える 2

1

1行を除いて、すべてが正しく見えます。変更する必要があります:

'category' => array( get_query_var($category->id)),

に:

'category' => $category->cat_ID

カテゴリオブジェクトには「id」プロパティはなく、「cat_ID」プロパティがあります。

さらに:何らかの理由で問題が解決しない場合、私が考えることができる他の唯一のことは、この行を変更することです:

$randpostid = ($randpost->ID);

に:

$randpostid = ($randpost[0]->ID);

get_posts()は配列を返しますが、単一の投稿が返されるときに配列形式であるかどうかはわかりません。いずれにせよ、最初のコード変更は必須であり、2番目はおそらく必要です。

于 2012-05-23T13:14:48.240 に答える
0

最新の投稿の情報を表示した直後であれば、おそらくもっと簡単な方法でこれを行うことができます。ページ テンプレートで次のようなものが動作するはずです (未テスト)。

編集

OPコメントに照らして編集された回答:

<?php
$cat_args = array('orderby' => 'name','order' => 'ASC'); //for parameters see http://codex.wordpress.org/Function_Reference/get_categories

$categories=get_categories($cat_args);

foreach($categories as $category) { // for each category we as for the most recent post

$post_args = array('numberposts' => 1, 'category' => $category, 'orderby' => 'post_date', 'order' => 'DESC', );

$posts_array = get_posts( $post_args );

foreach($lastposts as $post) : setup_postdata($post); //Use setup_postdata to access parts of the object using regular WP template tags ?> 

    <?php post_id = get_the_ID(); // or you could just use $post->ID ?>

    <!--Do your stuff here-->

<?php endforeach; ?>

<?php } ?>
于 2012-05-23T11:18:00.443 に答える