wp_tag_cloud();
にて、たとえば直近1ヶ月に投稿された記事についてるタグのみを、タグクラウドで出力したいと考えております。
いろいろ考えてみたのですが、どのようにやればよいのかよくわかりません。
もし方法等分かりましたらご教示いただけますと幸いです。
どうぞよろしくお願いします。
kei344が👍を押しています
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
ベストアンサー
コードはテストできていませんが、SQLだけは通ることを確認したので、なにかあったら修正してください。
functions.php に関数を準備。
PHP
1function my_limited_tag_cloud( $args ) { 2 $defaults = array( 3 'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45, 4 'format' => 'flat', 'separator' => "\n", 'orderby' => 'name', 'order' => 'ASC', 5 'exclude' => '', 'include' => '', 'link' => 'view', 'taxonomy' => 'post_tag', 'echo' => true 6 ); 7 $args = wp_parse_args( $args, $defaults ); 8 global $wpdb; 9 $query = " 10 SELECT DISTINCT terms.term_id as term_id, terms.name as name, t.count as count 11 FROM 12 $wpdb->posts as p 13 LEFT JOIN $wpdb->term_relationships as r ON p.ID = r.object_ID 14 LEFT JOIN $wpdb->term_taxonomy as t ON r.term_taxonomy_id = t.term_taxonomy_id 15 LEFT JOIN $wpdb->terms as terms ON t.term_id = terms.term_id 16 WHERE 17 t.taxonomy = 'category' AND p.post_status = 'publish' AND p.post_date > DATE_SUB( NOW( ) , INTERVAL 1 MONTH ) 18 t.taxonomy = 'post_tag' AND p.post_status = 'publish' AND p.post_date > DATE_SUB( NOW( ) , INTERVAL 1 MONTH ) 19 "; 20 $tags = $wpdb->get_results($query); 21 foreach ( $tags as $key => $tag ) { 22 if ( 'edit' == $args[ 'link' ] ) 23 $link = get_edit_tag_link( $tag->term_id, $tag->taxonomy ); 24 else 25 $link = get_term_link( intval( $tag->term_id ), $tag->taxonomy ); 26 if ( is_wp_error( $link ) ) 27 return false; 28 29 $tags[ $key ]->link = $link; 30 $tags[ $key ]->id = $tag->term_id; 31 } 32 33 $return = wp_generate_tag_cloud( $tags, $args ); 34 $return = apply_filters( 'wp_tag_cloud', $return, $args ); 35 if ( 'array' == $args[ 'format' ] || empty( $args[ 'echo' ] ) ) { 36 return $return; 37 } 38 echo $return; 39} /* 参考:http://hacknote.jp/archives/5449/ */
テンプレートのタグクラウドが必要な箇所に下記を記述。
PHP
1<?php my_limited_tag_cloud(); ?>
(参考)
【WordPress:カテゴリ別のタグクラウドを出す方法 | hacknote】
http://hacknote.jp/archives/5449/
SQLを使わない(直接書かない)やり方のほうが無難だとは思いますが、ちょっと処理的には無駄が多いような気がします。
(下記に考え方のみ記述しておきます)
PHP
1// 過去1か月分の記事を取得 2$args = array( 3 'posts_per_page' => -1 4 , 'date_query' => array( array( 'after' => '1 month ago' ) ) 5); 6$query = new WP_Query( $args ); 7/* 8 * 全部の記事から tag を配列 $tags に取り出し、マージする ← 記述していません 9 */ 10wp_tag_cloud( array( 'include') => $tags ); 11
投稿2016/04/08 16:23
編集2016/04/08 17:31総合スコア69407
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/12 18:07