前提・実現したいこと
HTML・CSSは、独学で読み書きできる程度ですが、PHPは書けないWordPress初心者です。
WordPressで動いている企業ホームページのトップページに表示されるブログの新着記事一覧の、5日前までの記事に「NEW!」のアイコンを付けたいと思っています。
以前、外注して作ったホームページなのですが、その会社はもうなくなってしまっているようです。
ですので、自力でカスタマイズしようと考えたのですが、上手く動かず、こちらで皆様のお知恵をお借りできればと思い投稿します。
ブログは4つのカテゴリーに分かれていて、そのすべての新着記事を投稿が新しい順に表示しています。
表示順は、「投稿日」「タイトル」「カテゴリー名」となっていて、
投稿日が5日前までの記事のタイトルの前に「NEW!」アイコンを追加し、
「投稿日」「NEW!」「タイトル」「カテゴリー名」 のようにしたいと考えています。
「NEW!」はCSSでアイコン風にするつもりです。
コードは、functions.php内にこのように記述されています。
該当のソースコード
php
1// 最新の投稿をリンク付きタイトルで表示 2function shortcode_recent_posts( $args ) { 3 global $wpdb; 4 5 $catgoires = implode(', ', array( 6 2, // ◇カテゴリーA 7 7, // ◇カテゴリーB 8 19, // ◇カテゴリーC 9 33, // ◇カテゴリーD 10 )); 11 12 $query = " 13 SELECT 14 $wpdb->posts.ID as ID, 15 $wpdb->posts.post_title as post_title, 16 $wpdb->posts.post_date as post_date, 17 $wpdb->terms.name as category_name 18 FROM $wpdb->posts 19 LEFT JOIN $wpdb->term_relationships ON 20 ($wpdb->posts.ID = $wpdb->term_relationships.object_id) 21 LEFT JOIN $wpdb->term_taxonomy ON 22 ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) 23 LEFT JOIN $wpdb->terms ON 24 ($wpdb->term_taxonomy.term_id = $wpdb->terms.term_id) 25 WHERE $wpdb->posts.post_status = 'publish' 26 AND $wpdb->term_taxonomy.taxonomy = 'category' 27 AND $wpdb->term_taxonomy.term_id IN ($catgoires) 28 ORDER BY post_date DESC 29 LIMIT 15 30 "; 31 32 $results = $wpdb->get_results($query); 33 34 $items_buff = array(); 35 foreach ( $results as $p ) { 36 $items_buff []= '<li><a href="'.get_permalink( $p->ID ).'">'. 37 '<span class="time">'.mysql2date( 'Y.m.d', $p->post_date, false ).'</span>'. 38 //ここに「NEW!」をいれたい(<span class="new">NEW!</span>) 39 '<span class="title">'.esc_html( wp_trim_words( $p->post_title, 40 ) ).'</span> - '. 40 '<span class="category">'.esc_html( $p->category_name ).'</span>'. 41 '</a></li>'; 42 } 43 $items_html = implode( '', $items_buff ); 44 45 return '<ul>'.$items_html.'</ul>'; 46} 47add_shortcode('recent_posts', 'shortcode_recent_posts');
試したこと
ググると色々の方法がありましたが、残念ながら試した全てで上手く表示されませんでした。
例えば、こちらを参考にする場合・・・
PHP
1// functions.php内に 2function add_new($date,$days){ 3$today = date_i18n('U'); 4$elapsed = date('U',($today - $date)) / 86400; 5if( $days > $elapsed ){ 6echo '<span class="new">New</span>'; 7}}
HTML
1// 該当箇所に 2<?php add_new(get_the_time('U'),5); ?>
- functions.php内のどこに書いてもよいのか?
- 構文はこのままで良いのか?
- 該当箇所にはどのように書けばよいのか?
などが分からなく
思いつく限り(想像で)色々試しましたが、上手く表示されないか、重大なエラーになるかのどちらかで、途方に暮れています。
補足
ついでに、<span class="category 〇〇>のように、カテゴリーごとにクラス分けして、色分けもできればと考えています。
〇〇の部分は、slug名 や slug_ID が入れば、CSSで色分けできると思っています。
初心者の不躾な質問で恐縮ですが、お力添えいただければ幸いです。
どうぞよろしくお願いいたします。
回答8件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/20 13:17
2020/06/20 13:37
2020/06/20 17:57