質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

2回答

219閲覧

WordPress、PHP関数を含む長めなHTML表示の書き方

balls

総合スコア40

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2019/03/27 04:21

WordPressテーマのfunctions.phpに下記のようなブログ投稿表示用の関数を作成しましたが、
HTML表示部分の所が、echoの繰り返しで見にくくなっています。
もう少し見通しのよいような書き方はできないでしょうか?

PHP

1 2function displayBlogList( $num_list ) { 3 $args = array( 4 'post_type' => 'post', 5 'orderby' => 'date', 6 'posts_per_page' => $num_list 7 ); 8 $the_query = new WP_Query( $args ); 9 10 if ( $the_query->have_posts() ) : 11 while ( $the_query->have_posts() ) : $the_query->the_post(); 12 $post_id = get_the_ID(); 13 $category = get_the_category($post_id); 14 $cat_slug = $category[0] -> slug; 15 $cat_name = $category[0] -> name; 16 $category_link = get_category_link( $category[0] -> term_id ); 17 echo '<div class="up-inner">'; 18 echo '<div class="date">'; 19 the_time('Y.m.d'); 20 echo '</div>'; 21 echo '<div class="cat"><a href="' . $category_link . '">' . $cat_name . '</a></div>'; 22 echo '<a class="title" href="'; 23 the_permalink(); 24 echo '">'; 25 the_title(); 26 if ($cat_slug == "abc" || $cat_slug == "efg") { 27 echo "の記事を公開しました。"; 28 } 29 echo '</a>'; 30 echo '</div>'; 31 endwhile; 32 wp_reset_postdata(); 33 else : 34 echo '<p>投稿がありません。</p>'; 35 endif; 36}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2019/03/27 04:30

質問タグに「PHP」を追加されたほうが回答者が多いと思います。
papinianus

2019/03/27 04:51

the_time()やthe_permalink()がそれ自身echoを伴う処理のため、提示コードに類似の構造になることは不可避に思えます。 その前提では、それなりに見通しがよいように思えるのですが、どうなったら見通しがよくなったことになりますか?
balls

2019/03/27 05:34

ヒアドキュメントでの表示ができるようになれば理想です。これをすると逆に見にくくなってしまうでしょうか?
guest

回答2

0

PHP

1function displayBlogList( $num_list ) { 2 $the_query = new WP_Query( [ 3 'post_type' => 'post' 4 , 'orderby' => 'date' 5 , 'posts_per_page' => $num_list 6 ] ); 7 if ( $the_query->have_posts() ) : 8 while ( $the_query->have_posts() ) : $the_query->the_post(); 9 $category = get_the_category( get_the_ID() ); 10 $cat_slug = $category[ 0 ]->slug; 11 echo sprintf( ' 12 <div class="up-inner"> 13 <div class="date">%1$s</div> 14 <div class="cat"><a href="%2$s">%3$s</a></div> 15 <a class="title" href="%4$s">%5$s%6$s</a> 16 </div>' 17 , /* %1$s */ get_the_time( 'Y.m.d' ) 18 , /* %2$s */ get_category_link( $category[ 0 ]->term_id ) 19 , /* %3$s */ esc_html( $category[ 0 ]->name ) 20 , /* %4$s */ get_the_permalink() 21 , /* %5$s */ get_the_title() 22 , /* %6$s */ ( $cat_slug == 'abc' || $cat_slug == 'efg' ) ? 'の記事を公開しました。' : '' 23 ); 24 endwhile; 25 wp_reset_postdata(); 26 else : 27 echo '<p>投稿がありません。</p>'; 28 endif; 29} // 未テスト

投稿2019/03/27 10:58

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

こうしたいということですか?

php

1 echo <<<EOT 2<div class="up-inner"> 3<div class="date"> 4EOT 5; 6 the_time('Y.m.d'); 7 echo <<<EOT 8</div> 9<div class="cat"><a href="{$category_link}">{$cat_name}</a></div> 10<a class="title" href=" 11EOT 12; 13 the_permalink(); 14 echo '">';

投稿2019/03/27 05:48

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

balls

2019/05/20 15:57

評価が遅れ申し訳ありません。そうです。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問