人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

特定のページ(トップページではないページ)に、get_posts()を用いて特定のカテゴリーの記事一覧(タイトル)を表示したいと思っています。

<?php
$posts = get_posts('numberposts=5&category=14');
foreach($lastposts as $post) :
setup_postdata($post);
?>
<li><span class="date"><?php the_time('Y/m/d') ?></span> <a href="<?php the_permalink(); ?>" id="post-<?php the_ID(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>

カテゴリーID:14の記事一覧を表示したいとして、このようなコードを考えたのですが、うまくいきません。
結果はどうなるかというと、最新のページ(投稿ではなく)が1件のみ出力されます。
試しにカテゴリー指定を消してみましたが、結果は同じです。

ちなみに、トップページに

<?php
$lastposts = get_posts('numberposts=5');
foreach($lastposts as $post) :
setup_postdata($post);
?>
<li><span class="date"><?php the_time('Y/m/d') ?></span> <a href="<?php the_permalink(); ?>" id="post-<?php the_ID(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>

というコードが書いてあって、こちらは正しい結果が出力されています。

どこをどう修正すればよいのかご教示いただければ幸いです。

●質問者: カミオソウイチロウ
●カテゴリ:インターネット ウェブ制作
✍キーワード:as PHP カテゴリー コード タイトル
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● pahoo
●35ポイント

WordPress のスクリプトに関するご質問ですよね。

でしたら、最初の行が間違っています。正しくは下記の通り。


(誤)$posts = get_posts('numberposts=5&category=14');

(正)$lastposts = get_posts('numberposts=5&category=14');

◎質問者からの返答

そうです。wordpressと書き忘れました。ご指摘感謝です。

さっそく訂正して再度チャレンジしてみました。

…が、結果は一緒です。すみません。


2 ● rouge_2008
●100ポイント ベストアンサー

試してみましたが、質問に記載してあるスクリプトで正常に動作しました。

※回答で指摘されている箇所は訂正済み。

記述した場所が問題なのだと思いますが、どこに書いていますか?

<?php if などの条件がどこからどこまでなのか、注意しながら変更してみてください。

例えば、標準添付の「WordPress Default」場合ですが、「sidebar.php」の次の行以降に記述すると表示されるはずです。(※42行目付近にあります。)

<?php wp_list_pages('title_li=<h2>' . __('Pages', 'kubrick') . '</h2>' ); ?>

次の記述を追加(※項目タイトルの<h2>も追加してあります。)

<?php if ( is_page() ) {

?>

<li><h2>記事リスト</h2>

<ul>

<?php

$posts = get_posts('numberposts=5&category=14');

foreach($posts as $post) :

setup_postdata($post);

?>

<li><span class="date"><?php the_time('Y/m/d') ?></span> <a href="<?php the_permalink(); ?>" id="post-<?php the_ID(); ?>"><?php the_title(); ?></a></li>

<?php endforeach; ?>

</ul></li>

<?php } ?>


※文字コードをUTF8にして保存してください。(そうしないとh2で指定した日本語部分が文字化けします。)

※Poedit(http://www.poedit.net/)を使用して、ja.mo(「wp-content」→「languages」フォルダ内)を変更した場合は、SJISのままでも大丈夫です。

この場合は、<h2>?</h2>内は、以下のように指定します。

<?php printf(__("Category's Entries List")) ; ?>

※「Category's Entries List」は、自分で好きな文字列を指定してかまいません。ja.po(「wp-content」→「languages」フォルダ内)にここで指定した文字列を追加する必要があります。



上記で解決できない場合はフォローしますので、コメント欄を開けておいてください。

その際にどのテーマを使用しているのかも教えてください。

◎質問者からの返答

ご回答ありがとうございます!

使用テーマはwsc4です。http://wsc.studiobrain.net/4/

ページ内(htmlを記述すべき部分)にこの記述を複数配置し、

categoryIDを変更して使おうとしています。

そのためにrunPHPを使っています。

ご回答いただいたコードをページに貼り付けてみましたが、

出力結果は同じで、最新のページ(投稿ではなく)が1件のみ出力されます。

試しにカテゴリー指定を消してみましたが、結果は同じです。

パーマリンク設定を「数字ベース」にしていることは関係ありますでしょうか。

導入したてて不慣れですので、他に示すべき情報がございましたらご指摘くださいませ。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ