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

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

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

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

491閲覧

Wordpressプラグイン"Wordpress popular posts"でのカテゴリの呼び出し

koevi97118

総合スコア17

WordPress

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/06/06 18:16

目標

WordPress popular posts 以下WPP を使用しています
普通に記事を呼び出す事はできるのですが、この度、カテゴリごとに記事カードの色を変えたいと思っています

つまり、htmlにおける

html

1<span class="cat-name cat-id-<?php echo $cat->cat_ID;?>"></span>

というようなclassを付与したいのですが、

現状

WPPを読み出すクエリの中に(php文の中にhtmlを書いている)ため

php

1<?php 2wpp_get_mostpopular( 3 array( 4 // PV集計期間(daily, weekly, monthly, all から選べます) 5 'range' => 'last14days', 6 7 'title_length'=>'35', 8 // PV数順で並び替え(comments を指定するとコメント順になります) 9 'order_by' => 'views', 10 11 // post OR page 12 'post_type' => 'post', 13 14 'pid'=>'2661,2658,2716,2694', 15 // 表示数 16 'limit' => 30, 17 18 19 // 閲覧数表示するか(1なら表示、 0なら非表示) 20 'stats_views' => '0', 21 22 // HTMLのラッパー 開始タグ 23 'wpp_start' => '<div class="wpp-posts-container">', 24 25 // HTMLのラッパー 終了タグ 26 'wpp_end' => '</div>', 27 28 // サムネイル画像の幅 29 'thumbnail_width' => '480', 30 31 // サムネイル画像の高さ 32 'thumbnail_height' => '300', 33 34 // 投稿日時表示 35 'stats_date' => true, 36 'stats_date_format' => 'Y/m/d', 37 'stats_category' => true, 38 39 'stats_author' => true, 40 41 // HTML部分 42 'post_html' => ' 43<div class="post-list-magazine"> 44 <article class="post-list"> 45 <div class = "wpp-card"> 46 <header> 47 <div class="post-thumbnail">{thumb}</div> 48 </header> 49 <section class="p"> 50 <div class="wpp-card-title"> <h2>{title}</h2></div> 51 52   <span class="wpp-meta post-stats">{stats}</span> 53 </section> 54 </div> 55 </article> 56</div>' 57 ) 58); 59?>

このwpp-cardのところにカテゴリを代表する(idなど)挿入できたらいいのですが、実際にはphpをphpで挟むことになってしまい、それができません

どなたか良いほうほうをご存知でしょうか、よろしくお願いいたします

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

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

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

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

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

guest

回答1

0

ベストアンサー

このwpp-cardのところにカテゴリを代表する(idなど)挿入できたらいいのですが、実際にはphpをphpで挟むことになってしまい、それができません

当該プラグインでの HTML 出力時にカテゴリー情報を追加するためには、wpp_parse_custom_content_tags フィルターでカスタムコンテンツタグを追加する必要があるようです。例えば {cat_ID} というカスタムコンテンツタグとして cat-id-XXX (XXX はカテゴリーID) クラスを出力するためには

php

1<?php 2/** 3 * Parses custom content tags in WordPress Popular Posts. 4 * 5 * @param string $html The HTML markup from the plugin. 6 * @param integer $post_id The post/page ID. 7 * @return string 8 */ 9function wpp_parse_tags_in_popular_posts( $html, $post_id ) { 10 if ( false !== strpos( $html, '{cat_ID}' ) ) { 11 if ( $categories = get_the_category( $post_id ) ) { 12 $class = 'cat-id-' . $categories[0]->cat_ID; 13 $html = str_replace( '{cat_ID}', $class, $html ); 14 } 15 } 16 return $html; 17} 18add_filter( 'wpp_parse_custom_content_tags', 'wpp_parse_tags_in_popular_posts', 10, 2 );

でカスタムコンテンツタグの処理を追加し、

php

1<?php 2wpp_get_mostpopular( 3 array( 4 ... 5 'post_html' => ' 6<div class="post-list-magazine"> 7 <article class="post-list"> 8 <div class = "wpp-card cat-name {cat_ID}"> 9 <header> 10 <div class="post-thumbnail">{thumb}</div> 11 </header> 12 <section class="p"> 13 <div class="wpp-card-title"> <h2>{title}</h2></div> 14 15 <span class="wpp-meta post-stats">{stats}</span> 16 </section> 17 </div> 18 </article> 19</div>' 20 ) 21);

のように {cat_ID} を使用してみてください。

編集前

文字列の結合演算子 "." を使うと実現できると思います。

php

1<?php 2wpp_get_mostpopular( 3 array( 4 ... 5 'post_html' => ' 6<div class="post-list-magazine"> 7 <article class="post-list"> 8 <div class = "wpp-card cat-name cat-id-' . $cat->cat_ID . '"> 9 <header> 10 <div class="post-thumbnail">{thumb}</div> 11 </header> 12 <section class="p"> 13 <div class="wpp-card-title"> <h2>{title}</h2></div> 14 15 <span class="wpp-meta post-stats">{stats}</span> 16 </section> 17 </div> 18 </article> 19</div>' 20 ) 21);

投稿2019/06/07 00:33

編集2019/06/09 16:51
YukiYamashina

総合スコア1011

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

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

koevi97118

2019/06/09 15:13

試してみたのですが、エラーは吐かないのですが、クラスとして表示されない(空白になってしまいます)です wpp-card cat-name cat-id というclassになってしまいます、、なぜでしょう
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問