Funktion, som henter ID underkategorier, der tilhører den overordnede kategori
Kategorier: sin egen funktion
2011/01/21 Sidst opdateret:
2010/06/15: Sun Indlæg
Tidligere, to artikler i et enkelt billede af hver underkategori og derefter forsøge at hente skrev en artikel kaldet, fordi det er for en lille smule mere i efterspørgslen smart (og det virker).
At sige, at jeg kun blev ændret til "get direkte i databasen" fra "regulære udtryk mistænkeligt."
WordPress funktion, der henter ID underkategorier
Du kan bruge når som helst, hvis du lægger ind i de følgende funktioner: per functions.php.
// サブカテゴリIDを取得する関数
function get_subcat_id( $cat_id = null ) {
global $wpdb;
if($cat_id == null) return false;
// サブカテゴリを取得
$sub_cat = $wpdb->get_col($wpdb->prepare("SELECT term_id FROM $wpdb->term_taxonomy WHERE parent=%d", $cat_id));
return $sub_cat;
}
WordPress サブカテゴリのIDを取得する関数
取得できるのは直下のサブカテゴリのみです。
使用方法としては、以下のように使えます。
<?php
// サブカテゴリのIDを取得(親カテゴリのIDを5とする)
$sub_cat = get_subcat_id(5);
// サブカテゴリが存在するか
if($sub_cat) {
// ループして処理
foreach($sub_cat as $id) :
?>
<h3><a href="<?php echo get_category_link($id); ?>"><?php echo get_cat_name($id); ?></a></h3>
<ul>
<?php if (have_posts()) : query_posts("posts_per_page=5&cat=$id&orderby=ID&order=desc"); ?>
<?php while (have_posts()) : the_post(); ?>
<li><?php the_time('y-m-d'); ?> <a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
<?php endwhile; endif; wp_reset_query(); ?>
</ul>
<?php
endforeach;
} else {
echo '<p>サブカテゴリは存在しません。</p>';
}
?>
WordPress サブカテゴリのIDを取得する関数
間違いがあればご指摘下さい。
- タグ
- id取得 , WordPress備忘録 , サブカテゴリ
- トラックバックURL
-
[...] 参考:親カテゴリに属するサブカテゴリのIDを取得する関数 [...]





























2012/1/24 火曜日 21:15:48
コチラの記事、大変参考になりました。
WordPress初心者なんですが、やりたいこととほぼ同様の答えがこちらでした。
1点質問なのですが、こちらをそのまま使うと、記事の登録されていないサブカテゴリ(部分)も表示されてしまいます。
この問題を解決する方法を教えて頂けないでしょうか。
お忙しいところ恐れ入りますが、
何卒よろしくお願いいたします。
2012/1/25 水曜日 08:44:05
>matsuさん
参考になり何よりです。
> 1点質問なのですが、こちらをそのまま使うと、記事の登録されていないサブカテゴリ(部分)も表示されてしまいます。
> この問題を解決する方法を教えて頂けないでしょうか。
サブカテゴリーのIDを取得する時に調べるSQLもあると思いますが、簡単なのは以下のやり方だと思います。
1.12,13行目の<h3>と<ul>タグを15行目の下に入れる。
2.18行目の</ul>タグを17行目の前に入れる。
have_posts()は「記事がある場合」ですから、記事が無い場合は出力しないはずです、多分。試していないのですが、恐らく問題ないはずです。
以上、参考までに。(^^)
2012/1/25 水曜日 12:24:25
ISプランニングさま
ご回答誠にありがとうございます!
実はその形は試していました。
確かにそうすると、記事0件のは表示されなくなるのですが、
そうすると各エントリーに対してとが出力されてしまうという別の問題が・・・。
やりたいのがエントリーの一覧に対してサブカテゴリーが1つの形なので
もし何かうまくいく方法があればご教授お願い申し上げますm( _ _ )m
2012/1/25 水曜日 12:41:36
ISプランニングさま
すいません、文字が抜けてしまっておりました。
そうすると各エントリーに対してとが出力されてしまうという別の問題が・・・。
と書くつもりでした。
2012/1/25 水曜日 12:52:35
>matsuさん
多分タグを書こうとしているのでは?
タグは消されるので「&lt;」と「&gt;」(どちらも半角で)を使ってください。
2012/1/25 水曜日 13:04:12
すいません!
そうすると各エントリーに対して<h3>と<ul>が出力されてしまうという別の問題が・・・。
です!
2012/1/25 水曜日 13:04:34
>matsuさん
あぁ意味が分かりました。(^_^;)
確かにこれはダメですね。すいません。
では、14行目と15行目の間に、
<?php if (have_posts()) : ?>
を入れて、17行目を
<?php endwhile; endif; endif; wp_reset_query(); ?>
と変えたらどうでしょうか?
(というか14行目の「if (have_posts()) :」は不要の予感…)
2012/1/25 水曜日 13:15:01
ごめんなさい、もう少しちゃんと書きます。
foreach($sub_cat as $id) : 以降からです。
<?php query_posts(省略); ?>
<?php if(have_posts()) : ?>
<h3>省略</h3>
<ul>
<?php while (have_posts()) : the_post(); ?>
<li>省略</li>
<?php endwhile; ?>
</ul>
<?php endif; wp_reset_query(); ?>
どうでしょうか?
2012/1/25 水曜日 13:34:06
ISプランニング様
ありがとうございます!!!
完璧にできました!!!
本当にありがとうございました!!!