Funktion, die die ID der Unterkategorien Zugehörigkeit zur übergeordneten Kategorie ruft
Kategorien: seine eigene Funktion
2011.01.21 Letzte Aktualisierung:
2010.06.15: So Beiträge
Zuvor zwei Artikel in einer einzigen Ansicht von jeder Unterkategorie schrieb und dann versuchen, einen Artikel abrufen genannt, weil sie für ein wenig mehr in der Nachfrage Smart (und es scheint) ist.
Zu sagen, dass ich nur geändert wurde, um "direkt in der Datenbank zu bekommen" aus dem "regulären Ausdruck verdächtig."
WordPress Funktion, die die ID der Unterkategorien ruft
Sie können jederzeit nutzen, wenn Sie in die folgenden Funktionen setzen: pro 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プランニング様
ありがとうございます!!!
完璧にできました!!!
本当にありがとうございました!!!