子カテゴリーに限定して出力しているわけではありませんが、こんな感じで事足りるかと思います
<?php
global $post;
$cat_slug = 'cat-a'; // カテゴリAのスラッグを指定してください
$args = array(
'post_per_page' => 0, // 全件表示
'category_name' => $cat_slug
);
$the_posts = get_posts( $args );
foreach ( $the_posts as $post ) {
setup_postdata ($post);
?>
<h1><?php the_title(); ?></h1>
<?php
// 投稿のカテゴリーを取得
$cats = get_the_category();
if (is_array($cats) && count($cats) > 0 ) {
foreach ($cats as $cat) {
// カテゴリーAと同じカテゴリーは除外
if ($cat->slug != $cat_slug) {
echo $cat->name;
}
}
}
}
wp_reset_postdata();
リンク先のコードは if($cat->category_parent != 0)
で親カテゴリーを持たないものは除外していますね。まあどちらでも良いかと思います
お返事くださっていたのに、お返事が遅くなってしまってすいませんでした。
都合により、スローペースでの制作となってしまっています。
まだ試していませんが、さっそくやってみます。
ありがとうございました。
先日は、ありがとうございました。
時間がかかりましたが、やってみました。
まず、ご回答いただきました内容を理解するのがとても難しい状況でした。
似たようなものを探し、下記のもので特定カテゴリの記事リストは表示できました。
//自分で考えたもの
<?php
$posts = get_posts(‘numberposts=0&category=2’);
global $post;
?>
<?php
if($posts): foreach($posts as $post): setup_postdata($post); ?>
<h1><?php the_title(); ?></h1>
<?php endforeach; endif;
?>
しかし、教えていただいたものでやってみますと、うまくいきません。
<?php
global $post;
$cat_slug = ‘cat-a’; // カテゴリAのスラッグを指定してください
$args = array(
‘post_per_page’ => 0, // 全件表示
‘category_name’ => $cat_slug
);
$the_posts = get_posts( $args );
foreach ( $the_posts as $post ) {
setup_postdata ($post);
?>
<h1><?php the_title(); ?></h1>
<?php endforeach; ?>
としました。
何かおかしいでしょうか?スラッグ名のところには、正しい名前をいれました。
自分で記述したものと何が違うのでしょうか?
教えていただいたものに、<?php endforeach; ?> というものがなかったので、同じ形式にするためにつけてみました。
これは、スラッグではなくIDではいけないのでしょうか?
もうひとつ
<?php
<!– 投稿のカテゴリーを取得 –>
$cats = get_the_category();
if (is_array($cats) && count($cats) > 0 ) {
foreach ($cats as $cat) {
<!– カテゴリーAと同じカテゴリーは除外 –>
if ($cat->slug != $cat_slug) {
echo $cat->name;
}
}
}
の部分は、子カテゴリを表示する部分だと思いますが、自分で書いた方に追加するとしたら、どこにどのように記述すればよいでしょうか?
また、<?php endforeach; ?> は必要ないのでしょうか?
また、
<?php
<!– 投稿のカテゴリーを取得 –>
の<?php を閉じるための ; ?> は必要ないのでしょうか?
できれば、教えていただいたもので実現したいと考えています。
どうぞよろしくお願いします。
一番最初の質問についてですが、解決しました。
ソースをじっとみてみましたら、echoのあとに画像の記述をはずし $cat->name; にしてみましたら、テキストだけが表示されました。
function my_categories(){
$cats = get_the_category();
foreach((array)$cats as $cat)
if($cat->category_parent != 0)
echo $cat->name;
}
としました。よかったでしょうか?
また先ほどのご返信に対しても実現してみたいので、何がいけなかったのか、教えていただけましたらもう一度、検討したいと思います。
よろしくお願いします。