WordPressのコメント欄を表示する方法

このQ&Aのポイント
  • WordPressで前後の記事のコメント欄を表示する方法について説明します。
  • 投稿オブジェクトとコメントオブジェクトを取得し、赤、青、緑のチームに分けます。
  • 各チームのコメントを表示するコードを追加し、コメントがない場合には「コメントなし」と表示します。
回答を見る
  • ベストアンサー

WordPressの質問(q10006002)の続

前後の記事のコメント欄を標示する方法がわかりません。 <?php $team = get_post_meta($post->ID, 'team', true);//赤、青、緑のチームに分ける // 投稿オブジェクトの取得 if ('red' === $team) { $post_red = $post; // 赤(現在) $post_blue = get_adjacent_post(true, '', false); // 青(現在の次) $post = $post_blue; // 現在を青に置きかえる $post_green = get_adjacent_post(true, '', false); // 緑(現在の次:青の次) $post = $post_red; // 現在を赤に戻す } elseif ('blue' === $team) { $post_blue = $post; // 青(現在) $post_red = get_adjacent_post(true, '', true); // 赤(現在の前) $post_green = get_adjacent_post(true, '', false); // 緑(現在の次) } elseif ('green' === $team) { $post_green = $post; // 緑(現在) $post_blue = get_adjacent_post(true, '', true); // 青(現在の前) $post = $post_blue; // 現在を青に置きかえる $post_red = get_adjacent_post(true, '', true); // 赤(現在の前:青の前) $post = $post_green; // 現在を緑に戻す } /*$post_thumbnail_id = get_post_thumbnail_id($post);//画像の投稿データから画像IDを取得する ※おそらくいらない */ $red_post_thumbnail_id = get_post_thumbnail_id($post_red);//赤、青、緑の投稿データから前後の画像IDを取得する $blue_post_thumbnail_id = get_post_thumbnail_id($post_blue); $green_post_thumbnail_id = get_post_thumbnail_id($post_green); $red_post_image_src = wp_get_attachment_image_src($red_post_thumbnail_id);//赤、青、緑の投稿データから前後の画像URLを取得する $blue_post_image_src = wp_get_attachment_image_src($blue_post_thumbnail_id); $green_post_image_src = wp_get_attachment_image_src($green_post_thumbnail_id); /*$post_id = post_id ($post_red,$post_blue,$post_green);*/ ※$argsで設定済みなので多分必要ない // コメントオブジェクトの取得 $args = [ 'author__not_in' => '1', // 管理者を除く 'status' => 'approve', // 承認済み 'type' => 'comment', // コメント ]; $args['post_id'] = $post_red->ID; // 赤のID $comments_red = get_comments($args); // 赤のコメント $args['post_id'] = $post_blue->ID; // 青のID $comments_blue = get_comments($args); // 青のコメント $args['post_id'] = $post_green->ID; // 緑のID $comments_green = get_comments($args); // 緑のコメント // コメントの表示 if (empty($comments_red)) { echo '<p>コメントなし</p>'; } else { echo '<ul>'; foreach ($comments_red as $comment) { echo "<li>{$comment->comment_content}</li>"; } echo '</ul>'; } if (empty($comments_blue)) { echo '<p>コメントなし</p>'; } else { echo '<ul>'; foreach ($comments_blue as $comment) { echo "<li>{$comment->comment_content}</li>"; } echo '</ul>'; } if (empty($comments_green)) { echo '<p>コメントなし</p>'; } else { echo '<ul>'; foreach ($comments_green as $comment) { echo "<li>{$comment->comment_content}</li>"; } echo '</ul>'; }

  • PHP
  • 回答数63
  • ありがとう数96

質問者が選んだベストアンサー

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (739/5638)
回答No.63

【投稿ページ その3】 ・break,continue構文以外で$offsetをコントロールする方法を探しているんですが、何か良い方法はありますでしょうか? こまかくわけるとこうですね。 ==== RSS バナー広告 記事前編 RSS バナー広告 記事続編 RSS コメント 前後の記事リンク ==== RSSと他のものの登場回数が異なるのでループしない方法でいきましょう。 最初にデータベースからRSSを取得して、$rss1、$rss2、$rss3のみっつに分けてためておきます。 あとはそのまま出力する方法でどうでしょうか。 ---- $rss1の出力 バナー広告 記事前編 $rss2の出力 バナー広告 記事続編 $rss3の出力 コメント 前後の記事リンク ----

php_learn
質問者

お礼

可能であればRSSのURLは固定ページと投稿ページで別のものにしたいですが負荷が多少心配です。

php_learn
質問者

補足

【投稿ページ その3】 ・break,continue構文以外で$offsetをコントロールする方法を探しているんですが、何か良い方法はありますでしょうか? こまかくわけるとこうですね。 ==== RSS バナー広告 記事前編 RSS バナー広告 記事続編 RSS コメント 前後の記事リンク ==== RSSと他のものの登場回数が異なるのでループしない方法でいきましょう。 最初にデータベースからRSSを取得して、$rss1、$rss2、$rss3のみっつに分けてためておきます。 あとはそのまま出力する方法でどうでしょうか。 ---- $rss1の出力 バナー広告 記事前編 $rss2の出力 バナー広告 記事続編 $rss3の出力 コメント 前後の記事リンク ---- A.回答ありがとうございます。RSSの出力については理解できたのですが、今のstorage_rss.phpと処理を分けるのか気になります。RSSは同じサイトから出力する予定です。 画像1,画像2,画像3は固定ページと投稿ページそれぞれ同じサイトのURLからを引っ張ります。 画像1タイトル1の固定投稿ページのRSS 画像2タイトル1の固定投稿ページのRSS 画像3タイトル1の固定投稿ページのRSS でURLは同じものにします。 それともSQLから操作するのでしょうか?

その他の回答 (62)

  • dell_OK
  • ベストアンサー率13% (739/5638)
回答No.12

【カテゴリー その12】 ・同じカラム名のものをつなげたという認識でいいのでしょうか?それともIDの役割で判断しているのでしょうか? IDの役割で判断している、です。 WordPressのデータベース構造では、同じカラム名、という認識は持たない方がいいです。 質問された箇所の上にもJOINがあります。 ---- INNER JOIN wp_term_relationships ON wp_posts.id = wp_term_relationships.object_id ---- つなげているものは違う名前です。 WordPressではひとつのテーブルに複数の役割を持たせているためカラム名が一致しない場合があるからです。 余談ですが、データベース構造が簡単なシステムの場合は、同じ意味のものには同じ名前を付け、違う意味のものには違う名前を付ける、としておくのがいいと私は思っています。 ことMySQLに限って言うと、ちょっと便利なSQL文の書き方があります。 これを、 ---- ON wp_term_taxonomy.term_taxonomy_id = wp_term_relationships.term_taxonomy_id ---- こう書くことができるのです。 ---- USING (term_taxonomy_id) ---- 同じ名前が前提なので、同じものを二回書かなくてよくなります。 このメリットは、二回も長々と書くことによる書き間違いをなくす、ことにあります。 書き間違い自体は実行してエラーなり結果が期待通りでないことからわかるのですが、それさえ削減できるとしたらこれほど便利なことはありません。 ・カラム値の候補が複数あるということは、=でつなげたterm_taxonomy_id のことでしょうか? そうです。

  • dell_OK
  • ベストアンサー率13% (739/5638)
回答No.11

【カテゴリー その11】 ・6,search.phpではLIMIT %d,%dとしていたが、これはcategory.phpでも使えるのでしょうか?意味をよく理解出来ていないので、教えてください。 使えます。 説明が面倒なので控えます。 まずはこちらを読んでください。 関数リファレンス/wpdb Class SQL インジェクション攻撃からクエリを保護する https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wpdb_Class 読んで試してそれでもわからなかった場合は説明します。

php_learn
質問者

お礼

SQLを実行してみたところ下記のエラーが表示されたのですが、参考サイトと違い略しているからでしょうか? SELECT post.*//投稿について ※参考サイト記述 SELECT DISTINCT wp_posts.id, wp_posts.post_title, wp_term_taxonomy.taxonomy, wp_term_taxonomy.term_id ※入力文 https://imgur.com/DtLwnIQ.jpg https://imgur.com/yJiv6Ap.jpg ※エラー文 解析中に 1 個のエラーが見つかりました。 終端クォート ' があるべきです。 (near "" at position 893) SQL クエリ: ドキュメント SELECT post. FROM wp_posts INNER JOIN wp_term_relationships ON wp_posts.id = wp_term_relationships.object_id INNER JOIN wp_term_taxonomy ON wp_term_taxonomy.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id WHERE wp_term_taxonomy.term_id IN ( SELECT wp_term_taxonomy.term_id FROM wp_posts INNER JOIN wp_term_relationships ON wp_post.id = wp_term_relationships.object_id INNER JOIN wp_term_taxonomy ON wp_term_taxonomy.term_taxonomy_id =wp_term_relationships.term_taxonomy_id WHERE wp_post.id = '.$post_id.' AND wp_posts.post_stayus = "publish" ORDER BY wp_post.id ) meta.meta_key = 'single_rss_feed1' AND post.post_type = 'post' AND post.post_status = 'publish' AND wp_posts.id != '.$post_id.' '; AND wp_term_taxonomy.taxonomy = "category" ORDER BY post.post_date DESC LIMIT %d,%d LIMIT 0, 25 MySQL のメッセージ: ドキュメント #1064 - SQL構文エラーです。バージョンに対応するマニュアルを参照して正しい構文を確認してください。 : 'FROM wp_posts INNER JOIN wp_term_relationships ON wp_posts.id = wp_term_relat...' 付近 1 行目

php_learn
質問者

補足

回答ありがとうございます。行の INSERTで見つけました。 %s - 文字列 %d - 整数 (すべて数字) %f - 浮動小数点数 となっているんですね。覚えておきます。

  • dell_OK
  • ベストアンサー率13% (739/5638)
回答No.10

【カテゴリー その10】 ・2,カテゴリーが1つの記事で複数ある場合、何か特殊なテーブル設計は必要でしょうか? 必要ないと思います。 ・3,INNER JOINが使われていることが多いがLEFT JOINは基本使わないのでしょうか? それはテーブルの組み合わせと取得したいものによります。 前回、過不足なく、と言ったのはこのことも含んでいます。 その違いを例をあげて説明するのは面倒なので今は控えておきます。 両方とも実行して結果を見て、どちらが正解かを判断してみてください。 ・4,ON wp_term_taxonomy.term_taxonomy_id   = wp_term_relationships.term_taxonomy_id 参考サイトのイコールの意味がよくわかりません。 こちらですね。 ---- FROM wp_posts INNER JOIN wp_term_relationships ON wp_posts.id = wp_term_relationships.object_id INNER JOIN wp_term_taxonomy ON wp_term_taxonomy.term_taxonomy_id = wp_term_relationships.term_taxonomy_id ---- wp_term_taxonomyテーブルのterm_taxonomy_idとwp_term_relationshipsテーブルのterm_taxonomy_idが等しいものをつなげる、という意味です。 たいていの場合、どちらかが主キーになっています。 なぜなら、ただひとつのものとつなげることが多いからです。 ここではwp_term_taxonomy.term_taxonomy_idが主キーですね。 wp_term_relationships.term_taxonomy_idも主キーに含まれてはいるのですが、もうひとつobject_idとふたつセットで主キーになっているため、term_taxonomy_idだけでは「ただひとつのもの」とは言い切れないものとなっています。 組み合わせによっては、ただひとつのものではなく複数と複数のものをつなげたり、ただひとつのもの同士をつなげたりもしますので、主キーではないこともありますし、主キーだけのこともあります。 ・5,WHERE wp_term_taxonomy.term_id IN ()  参考サイトの条件がよくわかりません。 こちらですね。 ---- WHERE wp_term_taxonomy.term_id IN ( SELECT wp_term_taxonomy.term_id FROM wp_posts INNER JOIN wp_term_relationships ON wp_posts.id = wp_term_relationships.object_id INNER JOIN wp_term_taxonomy ON wp_term_taxonomy.term_taxonomy_id = wp_term_relationships.term_taxonomy_id WHERE wp_posts.id = '.$post_id.' //投稿IDを渡す AND wp_posts.post_status = "publish" ORDER BY wp_posts.id ) ---- INについては以前説明したかと思います。 意味は同じです。 ==== IN句と言うのは、あるカラムの値の候補が複数ある場合に使うものです。 書き方はこうです。 WHERE A IN (1,2,3) ==== 意味は同じですが、これは候補の値を直接書く方法でした。 参考サイトのものは、候補を()内のSELECTで取得する方法です。 候補値はSELECTのすぐ次にあるwp_term_taxonomy.term_idです。

php_learn
質問者

補足

【カテゴリー その10】 ・2,カテゴリーが1つの記事で複数ある場合、何か特殊なテーブル設計は必要でしょうか? 必要ないと思います。 A.ありがとうございます。 ・3,INNER JOINが使われていることが多いがLEFT JOINは基本使わないのでしょうか? それはテーブルの組み合わせと取得したいものによります。 前回、過不足なく、と言ったのはこのことも含んでいます。 その違いを例をあげて説明するのは面倒なので今は控えておきます。 両方とも実行して結果を見て、どちらが正解かを判断してみてください。 A.了解いたしました。 ・4,ON wp_term_taxonomy.term_taxonomy_id   = wp_term_relationships.term_taxonomy_id 参考サイトのイコールの意味がよくわかりません。 wp_term_taxonomyテーブルのterm_taxonomy_idとwp_term_relationshipsテーブルのterm_taxonomy_idが等しいものをつなげる、という意味です。 ここではwp_term_taxonomy.term_taxonomy_idが主キーですね。 wp_term_relationships.term_taxonomy_idも主キーに含まれてはいるのですが、もうひとつobject_idとふたつセットで主キーになっているため、term_taxonomy_idだけでは「ただひとつのもの」とは言い切れないものとなっています。 組み合わせによっては、ただひとつのものではなく複数と複数のものをつなげたり、ただひとつのもの同士をつなげたりもしますので、主キーではないこともありますし、主キーだけのこともあります。 A.同じカラム名のものをつなげたという認識でいいのでしょうか?それともIDの役割で判断しているのでしょうか? ・5,WHERE wp_term_taxonomy.term_id IN ()  参考サイトの条件がよくわかりません。 INについては以前説明したかと思います。 意味は同じです。 ==== IN句と言うのは、あるカラムの値の候補が複数ある場合に使うものです。 書き方はこうです。 WHERE A IN (1,2,3) ==== 意味は同じですが、これは候補の値を直接書く方法でした。 参考サイトのものは、候補を()内のSELECTで取得する方法です。 候補値はSELECTのすぐ次にあるwp_term_taxonomy.term_idです。 A.カラム値の候補が複数あるということは、=でつなげたterm_taxonomy_id のことでしょうか?

  • dell_OK
  • ベストアンサー率13% (739/5638)
回答No.9

【カテゴリー その9】 ・1,カテゴリーページで$categoryを出力する場合、$catと名前をつけても問題ないでしょうか? category.phpでは$catの名前は使わない方がよさそうです。 こちらの情報から、 https://teratail.com/questions/60266 このような記述にたどり着きました。 http://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/register_taxonomy#.E4.BA.88.E7.B4.84.E8.AA.9E この情報は私が確信を得るために探した情報なだけですので、一読されたいと思います。 なぜ確信を得る必要があったかですが、以下のコードで確認してみると、値が入っていたからです。 ----category.php if (isset($cat)) { echo "使用されています:{$cat}"; } else { echo '使用されていません'; } ---- category.php実行時点ではそれまでにWordPressが$catに値を入れてくれているようなので、この変数名は使わない方がいいと判断しました。 入っていた値はクリックしたカテゴリーのIDでしたので、これをもとに投稿を取得して表示していくことになると思います。 isset()はその変数が使用されているかどうかがわかります。 こちらを読んでおいてください。 https://www.php.net/manual/ja/function.isset.php

php_learn
質問者

補足

【カテゴリー その9】 ・1,カテゴリーページで$categoryを出力する場合、$catと名前をつけても問題ないでしょうか? category.phpでは$catの名前は使わない方がよさそうです。 category.php実行時点ではそれまでにWordPressが$catに値を入れてくれているようなので、この変数名は使わない方がいいと判断しました。 入っていた値はクリックしたカテゴリーのIDでしたので、これをもとに投稿を取得して表示していくことになると思います。 isset()はその変数が使用されているかどうかがわかります。 こちらを読んでおいてください。 https://www.php.net/manual/ja/function.isset.php A.参考サイトつきの解説ありがとうございます。isset()は便利ですね、覚えておきます。

  • dell_OK
  • ベストアンサー率13% (739/5638)
回答No.8

【カテゴリー その8】 ・ボタンクリックのセキュリティ対策を完璧にできる自信がなくAjexを選択したのですが、カテゴリー(データベース操作)に実装させるのは難しいでしょうか? セキュリティ対策については私はまったくわかりません。 カテゴリー(ページ?)に実装するのは難しくはないと思います。 質問者さまが組み込む難易度はあるにしても、すること自体は難しくないはずです。 ・1,アクセスランキングのようにcronでボットを識別させる アクセスランキングはcronではないと思いますが、私がしらないうちにcronに組み込まれましたか。 アクセスランキングのようにと言うことであれば、PHPでボットの識別をさせる、でいいと思います。 ・2,AjexとSQLを組み合わせる Ajaxです、アルファベットのつづりは気を付けましょう。 Ajaxにするだけで苦労しそうなので、ひとまず除外しましょう。 ・3,SQLとPHPでボットなどのセキュリティ対策を立てる これは1と同じことになるような気がします。 ・4,wordpressの関数ですべて対策する(Ajexかphp) これはこれで難易度が高くなりそうなので、除外しましょう。 ・5,cronで処理する(管理画面がすでに重くなりつつあるので選択肢から除外) 除外とのことですが、管理画面の重さとは関係ない気がします。 私はcronの出番はないと思っていましたが、その意図が「cronでランキングを計測」だとしたら、これはこれでいい案かもしれません。 即時性がないのでそれでもいいかどうかが私からの確認事項です。 カテゴリーランキングのためにすることは大きく分けてふたつのことです。 1.カテゴリーごとにカウントする 2.カテゴリーランキングを表示する と、その前に。 カテゴリーページにアクセスされない場合はカウントされなくてもいいのでしょうか。 私が思うカテゴリーランキングとは、投稿へのアクセスに基づくもので、それをカテゴリーごとに集計したランキングです。 例えば、カテゴリーと投稿が以下のようになっていたとします。 アクセスランキングの処理で投稿ごとにカウントされているとします。 ==== カテゴリー1 投稿1-1 5回アクセス カテゴリー1 投稿1-2 1回アクセス カテゴリー2 投稿2-1 4回アクセス カテゴリー2 投稿2-2 3回アクセス ==== カテゴリーランキングは集計値によってこうなります。 ==== 1位 カテゴリー2 7回アクセス 2位 カテゴリー1 6回アクセス ==== あまり聞かないですが、別のパターンでは、カテゴリー内最大アクセス回数でランキングするとこうです。 ==== 1位 カテゴリー1 5回アクセス 2位 カテゴリー2 4回アクセス ==== このような方法であれば、カテゴリーページにアクセスされなくても集計がとれます。 カテゴリーをどのように運用されるのかにもよりますので、カウントするタイミングは重要かと思います。

php_learn
質問者

お礼

category.phpを参考サイトを見ながら組んでみたのですが、疑問が複数あり質問いたします。 1,カテゴリーページで$categoryを出力する場合、$catと名前をつけても問題ないでしょうか? 2,カテゴリーが1つの記事で複数ある場合、何か特殊なテーブル設計は必要でしょうか? 3,INNER JOINが使われていることが多いがLEFT JOINは基本使わないのでしょうか? 4,ON wp_term_taxonomy.term_taxonomy_id   = wp_term_relationships.term_taxonomy_id 参考サイトのイコールの意味がよくわかりません。 5,WHERE wp_term_taxonomy.term_id IN ()  参考サイトの条件がよくわかりません。 6,search.phpではLIMIT %d,%dとしていたが、これはcategory.phpでも使えるのでしょうか?意味をよく理解出来ていないので、教えてください。 ※参考サイトをもとに組んだコード https://wandbox.org/permlink/BCFOZJr7rfLbBoop ※参考サイト 1,https://wpdocs.osdn.jp/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E6%A7%8B%E9%80%A0#Table:_wp_term_relationships 2,https://buco-bianco.com/wordpress-get-post-relations-sql/ 3,https://www.rcnt.jp/blog/how-categories-and-articles-are-tied-together/ 4,https://www.wakuwakubank.com/posts/240-wordpress-taxonomy-term/ 5,http://516.jp/2814 6,https://coding-memo.work/wordpress/91/

php_learn
質問者

補足

【カテゴリー その8】 カテゴリー(ページ?)に実装するのは難しくはないと思います。 質問者さまが組み込む難易度はあるにしても、すること自体は難しくないはずです。 A.前ページの左カラムに固定で出力させる予定です。 ・1,アクセスランキングのようにcronでボットを識別させる A.意味が分かりにくくすみません。Wordpressのcronを使い定期的に出力させ、ボットはPHPで出力させます。 ・2,AjexとSQLを組み合わせる Ajaxです、アルファベットのつづりは気を付けましょう。 Ajaxにするだけで苦労しそうなので、ひとまず除外しましょう。 A.了解しました。選択肢からは除外します。 ・5,cronで処理する(管理画面がすでに重くなりつつあるので選択肢から除外) 除外とのことですが、管理画面の重さとは関係ない気がします。 私はcronの出番はないと思っていましたが、その意図が「cronでランキングを計測」だとしたら、これはこれでいい案かもしれません。 即時性がないのでそれでもいいかどうかが私からの確認事項です。 カテゴリーページにアクセスされない場合はカウントされなくてもいいのでしょうか。 私が思うカテゴリーランキングとは、投稿へのアクセスに基づくもので、それをカテゴリーごとに集計したランキングです。 例えば、カテゴリーと投稿が以下のようになっていたとします。 アクセスランキングの処理で投稿ごとにカウントされているとします。 ==== カテゴリー1 投稿1-1 5回アクセス カテゴリー1 投稿1-2 1回アクセス カテゴリー2 投稿2-1 4回アクセス カテゴリー2 投稿2-2 3回アクセス ==== カテゴリーランキングは集計値によってこうなります。 ==== 1位 カテゴリー2 7回アクセス 2位 カテゴリー1 6回アクセス ==== あまり聞かないですが、別のパターンでは、カテゴリー内最大アクセス回数でランキングするとこうです。 ==== 1位 カテゴリー1 5回アクセス 2位 カテゴリー2 4回アクセス ==== このような方法であれば、カテゴリーページにアクセスされなくても集計がとれます。 カテゴリーをどのように運用されるのかにもよりますので、カウントするタイミングは重要かと思います。 A.カテゴリーボタンがクリックされたときにカウンターが正常に働きその回数をカウントするので、どちらかといえば前者だと思われます。 カテゴリーのクリック数を計算して、上位10~20を表示させる予定です。single,double,tripleすべてのアクセスを$argsで分けて、 ボットの処理などはPHPで実装することになるかと思われます。

  • dell_OK
  • ベストアンサー率13% (739/5638)
回答No.7

【カテゴリー その7】 ・http://www.gjdhjghjd.cfbx.jp/category/カテゴリー5となっております。URLはおかしいようです。 「カテゴリー5」がカテゴリー名ならおかしくはありません。 私も同じですが問題なく遷移しています。 ・wordpressでデータベースを操作する場合SQLで統一したほうが処理が軽くなることはないでしょうか? 統一はともかく、SQL文の方が処理は軽くなると思います。 大げさに言うと断然軽くなります。 SQL文を一回実行させるだけで済むように書ければそれにこしたことはありません。 単純にひとつのテーブルを読むだけならこれより軽いものはないでしょう。 問題があるとすれば、複数のテーブルを組み合わせて読む場合です。 WordPressの「データベース構造」を理解した上で各テーブルを関連付けかつ最適化したようなSQL文を書く必要があります。 過不足のないことは最低条件ですが、ちょっとおかしいところがあるとたちまち重いものになったりするのがSQL文でもあります。 他には、一回の実行で済まないような場合も、軽いとは言えないものになってしまいます。 WordPress関数よりは軽いと思いますが、その程度がわからないので、あまり違わないのかもしれません。 何はともあれ、質問者さまが挑戦することに意味がありますので、私が止めることではありません。

php_learn
質問者

お礼

補足の説明が分かりにくい為訂正します。 データベースの操作にSQLを使うのはほぼ確定しています。 処理が重くなりつつあるので出来るだけ軽減したいからです。 そのうえでAjexかPHPかで迷っております。 実装可能な方を選択する予定です。 ※Ajexボタンアクションはセキュリティが強いと調べた結果出てきたため選択肢に浮上しました。 PHPでカテゴリーランキングを実装する場合はWordpressのcronを扱うことを考えています。

php_learn
質問者

補足

回答ありがとうございます。ファイル名のスペルミスが問題でした。申し訳ありません… SQLについてのご説明ありがとうございます。処理が軽くなるのであればSQLで実装していきたいのですが、1点だけ不安材料がありまして、カテゴリーランキングにはAjexを使うかボットの識別をPHPで実装する必要があります。 ボタンクリックのセキュリティ対策を完璧にできる自信がなくAjexを選択したのですが、カテゴリー(データベース操作)に実装させるのは難しいでしょうか? $argsのデータベース操作を扱うのを前提として、クリック数を測る必要があるので、Ajexかcronかphpか選択肢を迷っております。 サイトの速度が最優先になりますので、最善の方法として考えているのはSQLを使いcronでランキングを計測してPHPでセキュリティ対策をすることだと考えております。 考えた選択肢が複数ありまして 1,アクセスランキングのようにcronでボットを識別させる 2,AjexとSQLを組み合わせる 3,SQLとPHPでボットなどのセキュリティ対策を立てる 4,wordpressの関数ですべて対策する(Ajexかphp) 5,cronで処理する(管理画面がすでに重くなりつつあるので選択肢から除外)

  • dell_OK
  • ベストアンサー率13% (739/5638)
回答No.6

【カテゴリー その6】 ・/home/peofreot/public_html/wp-content/themes/sample_theme/index.php index.phpに間違いないようですね。 では、URLがどうなっているか確認してください。 カテゴリーリンクにマウスカーソルをあてるとブラウザのどこかにURLが表示されると思います。 WindowsのChromなら左下です。 それと、クリックして遷移したあとのURLです。 ブラウザのアドレスバーのところです。 WordPressの設定のパーマリンク設定でURLの構造を設定できます。 私がインストールしたものでは「日付と投稿名」が初期値になっていて今もそのままです。 これだとURLの最後はカテゴリー名になります。 「基本」であればURLの最後は「?cat=数字」になります。 この構造になっていて、カテゴリーへのURLが正しいのにindex.phpへ飛ばされているとしたら、私には原因も対策も思いつきません ・深く調べてみたところget_termsをcategory.phpに渡してあげる必要がありそうです。 参考サイトを見ましたがget_termsを渡すような内容ではありませんでした。 そこでしているのも似たような内容でした。 get_terms()とget_categories()の違いはありますが、get_category_link()によってURLを取得するものです。 ・検索ページのような仕組みになると思われます。検索ページにはSQLを使っているのですが、カテゴリーにも使うべきでしょうか? 別途、カテゴリーランキングをAjaxを使い出力することも踏まえてのアドバイスをお願い致します。 それはそのカテゴリーに属する投稿の一覧を表示する処理のことですよね。 それでしたらget_posts()でもできそうなのでSQL文を書くまでもない気がします。 カテゴリーランキングに関してですが、以前いただいたコードをみると、なんとなくですが、カテゴリーIDごとにファイルがひとつずつできて、その内容がカウント数、のような感じかなと思っています。 これだとファイルがどんどん増えて管理できなくなりますし、そのファイルすべてを読み込まないとランキングがわからない、というものだと思います。 これに関しての参考サイトを見てみないと、この仕組みの本意がわかりません。 そう言う意味では、ファイルではなくデータベースに持たせた方がいいような気はします。 その前に、category.phpに遷移できるようにしないといけません。

php_learn
質問者

お礼

申し訳ありません。category.phpのファイル名のスペルミスが原因でした。 修正したところ上手くリンクさせることができました… 再度お聞きしたいのですが、データベースを使って表示していく場合にSQLにする必要はないのでしょうか? 検索ページは負担軽減のためにSQLを採用したので、今回は使わないというのが腑に落ちず疑問に思ってのでお聞きしたいです。

php_learn
質問者

補足

【カテゴリー その6】 では、URLがどうなっているか確認してください。 WordPressの設定のパーマリンク設定でURLの構造を設定できます。 私がインストールしたものでは「日付と投稿名」が初期値になっていて今もそのままです。 これだとURLの最後はカテゴリー名になります。 「基本」であればURLの最後は「?cat=数字」になります。 A.http://www.gjdhjghjd.cfbx.jp/category/カテゴリー5となっております。URLはおかしいようです。 設定は同じです。根本的なコードから間違っているような気がしているのですがもう一度見直してみます… ・検索ページのような仕組みになると思われます。検索ページにはSQLを使っているのですが、カテゴリーにも使うべきでしょうか? 別途、カテゴリーランキングをAjaxを使い出力することも踏まえてのアドバイスをお願い致します。 それはそのカテゴリーに属する投稿の一覧を表示する処理のことですよね。 それでしたらget_posts()でもできそうなのでSQL文を書くまでもない気がします。 A.1つお聞きしたいのですが、wordpressでデータベースを操作する場合SQLで統一したほうが処理が軽くなることはないでしょうか? 参考サイトを見るとカテゴリーのテーブルを操作しているように見えました。 カテゴリーランキングに関してですが、以前いただいたコードをみると、なんとなくですが、カテゴリーIDごとにファイルがひとつずつできて、その内容がカウント数、のような感じかなと思っています。 これだとファイルがどんどん増えて管理できなくなりますし、そのファイルすべてを読み込まないとランキングがわからない、というものだと思います。 これに関しての参考サイトを見てみないと、この仕組みの本意がわかりません。 そう言う意味では、ファイルではなくデータベースに持たせた方がいいような気はします。 A.了解いたしました。アドバイスありがとうございます。

  • dell_OK
  • ベストアンサー率13% (739/5638)
回答No.5

【カテゴリー その5】 ・以前と同じようにindex.phpが表示されています。 なにをもってindex.phpが表示されていると思われていますか。 私はそうは思っていなくて、category.phpが表示されていると思っています。 まずはどのファイルが実行されているか確認してみましょう。 どちらのファイルにも以下のようにしてみてください。 ---- <?php echo __FILE__; ---- これで実行しているファイル名が表示されます。

php_learn
質問者

補足

回答ありがとうございます。 確認したところ下記のように表示されています。 /home/peofreot/public_html/wp-content/themes/sample_theme/index.php

  • dell_OK
  • ベストアンサー率13% (739/5638)
回答No.4

【カテゴリー その4】 ・カテゴリーをクリックするとなぜかindex.phpに飛びます。 それでしたらカテゴリーURLに問題があるかもしれません。 カテゴリー名に特殊文字か何かが含まれていて、エラー扱いで飛ばされていると想像します。 参考サイトにURLの取得方法がありましたので組み込んでみましょう。 get_category_link()の行を追加してください。 ----front-page.php $categories = []; foreach (get_categories() as $category) { $category->category_link = get_category_link($category->cat_ID); $categories[$category->cat_ID] = $category; } ---- それと、URLの部分を変更してください。 ----front-page.php echo "<li><a href=\"{$category->category_link}\">{$category->cat_name}</a></li>"; ----

php_learn
質問者

補足

回答ありがとうございます。以前と同じようにindex.phpが表示されています。 深く調べてみたところget_termsをcategory.phpに渡してあげる必要がありそうです。 検索ページのような仕組みになると思われます。検索ページにはSQLを使っているのですが、カテゴリーにも使うべきでしょうか? 別途、カテゴリーランキングをAjaxを使い出力することも踏まえてのアドバイスをお願い致します。 ※参考サイト https://coding-memo.work/wordpress/91/

  • dell_OK
  • ベストアンサー率13% (739/5638)
回答No.3

【カテゴリー その3】 ・投稿を確認したかったのですが、コンテンツ自体が表示されなくなってしまいます。 cronの影響が考えられるのですが… どのように対処すればいいのでしょうか? 変更しておかしくなったのなら、元に戻すのが基本です。 元に戻しておかしくなければ、変更が原因である場合が多いです。 元に戻してもおかしければ、変更とは別のものが原因である場合が多いです。 まずはリンクにしたことが原因かどうか元に戻して確認してください。 私にはcronの影響は考えられませんが、それを疑うのであればcronを削除して確認してください。

php_learn
質問者

補足

すみません。確認不足でした。カスタムフィールド名が間違っていたようです。 リンクを確認することができました。ありがとうございます。 問題が1つありまして、カテゴリーをクリックするとなぜかindex.phpに飛びます。 index.phpの内容を/**/で非表示にするとcategory.php(新たに作成)したものに飛ぶのですが、原因はcategory.phpに記事を表示させるコードを組んでいないからでしょうか? category.phpに飛ばしてみても白紙の状態で表示され, $category = $categories[$cat_ID]; と category.phpが結びついていないようです。 ※該当ファイル https://wandbox.org/permlink/IcfP1hz348fi93lB ※参考サイト https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/get_the_category https://www.radia.jp/archives/1205

関連するQ&A

  • コメント欄を出力した後に返信機能を追加したい

    カスタムフィールド名をつけて記事を振り分けていきたいのですが、上手くいきませんどうすれば良いでしょうか? $nextID = $post_ids[$current + 1]; //$currentの1つあと $next2ID = $post_ids[$current + 2]; //$currentの2つあと echo '<ul>'; //1つあとの記事のコメント $args = ['post_id' => $nextID, 'number' => 1]; $comments = get_comments($args); if (empty($comments)) { $comment = 'コメントなし'; } else { $comment = $comments[0]->comment_content; } echo "<li>{$comment}</li>"; //2つあとの記事のコメント $args = ['post_id' => $next2ID, 'number' => 1]; $comments = get_comments($args); if (empty($comments)) { $comment = 'コメントなし'; } else { $comment = $comments[0]->comment_content; } echo "<li>{$comment}</li>"; echo '</ul>';

    • ベストアンサー
    • PHP
  • WordPressの質問(q10054200)の続

    display.phpでコメントにハートマークをつけていいねボタンをカウントを実装したいのですが、Font Awesomeとカウントアップを結びつける構造が分かりませんでした。アドバイスお願い致します。 functions.phpにfunction set_post_views_days()と3,7日間のカウンターをまとめているのですが、そちらと合体させたほうがいいでしょうか? 別に実装すべきでしょうか?毎回関係のないコメントのグッドカウントを読み込むのか、別途関数を作成して読み込ませるどちらが負担が軽いのか悩んでいます。 ※カスタムフィールド(view_good_count)でカウント function view_good_btn() { global $cat; $sql = " SELECT c.*, cc.*, vv.meta_value AS good_count FROM wp_commentmeta AS c INNER JOIN wp_comments AS cc ON c.comment_ID = cc.comment_ID WHERE meta_key = 'view_good_count' AND meta_value != 0 ORDER BY vv.meta_value DESC "; $query = $wpdb->prepare($sql); $commentmeta = $wpdb->get_results($query); foreach ($commentmeta as $comment) { $url = get_term_link($comment); <a href=\"{$url}\" width: 97px;height: 130px;> <div class=\"btn-good-wrap\">{$commentmeta->button}</div> </a> <div class=\"container\"> </div> "; } ※Font Awesomeのハートマーク <i class="fa fa-heart" aria-hidden="true"></i> ※ボタンカウントで悩んでいるコード https://wandbox.org/permlink/7AQ5Sunt8Ok2NQhE

    • ベストアンサー
    • PHP
  • SQLに条件を追加したいのですが方法が分かりません

    <?php $search_query = get_search_query(); ?> <?php global $wpdb; ?> <?php $sql = " SELECT COUNT(*) AS all_count FROM wp_posts AS post INNER JOIN ( SELECT * FROM wp_postmeta WHERE meta_key='single_rss_feed1' ) AS feed ON post.ID = feed.post_id LEFT JOIN ( SELECT * FROM wp_postmeta WHERE meta_key = '_thumbnail_id' ) AS thumbnail ON post.ID = thumbnail.post_id LEFT JOIN wp_posts AS attachment ON thumbnail.meta_value = attachment.ID LEFT JOIN ( SELECT category.object_id AS post_id, GROUP_CONCAT(category.name ORDER BY category.term_id) AS category_names, GROUP_CONCAT(category.slug ORDER BY category.term_id) AS category_slugs FROM ( SELECT sub_a.name, sub_a.slug, sub_c.object_id, sub_a.term_id FROM wp_terms AS sub_a LEFT JOIN wp_term_taxonomy AS sub_b ON sub_a.term_id = sub_b.term_id LEFT JOIN wp_term_relationships AS sub_c ON sub_b.term_taxonomy_id = sub_c.term_taxonomy_id WHERE sub_b.taxonomy = 'category' ) AS category GROUP BY category.object_id ) AS category ON post.ID = category.post_id WHERE post.post_type = 'post' AND post.post_status = 'publish' AND post.post_content LIKE %s OR post.post_title LIKE %s OR post.post_excerpt LIKE %s) $query = $wpdb->prepare($sql, "%$search_query%", "%$search_query%", "%$search_query%"); $results = $wpdb->get_results($query); ?> <?php if ($results) : ?> <ul> <?php foreach ($results as $result) : ?> <li> <?php echo "<a href=\"{$result->post_url}\">{$result->post_title}</a>"; echo $result->post_date; echo $result->category_names; if (empty($result->comment_count)) { echo 'コメントなし'; } else { echo "{$result->comment_count}件のコメント"; } echo $result->post_excerpt; echo "<a href=\"{$result->post_url}/#more-{$result->post_id}/\">続きを読む</a>"; if (empty($result->thumbnail_url)) { $result->thumbnail_url = 'noimage.jpg'; } echo "<img src=\"{$result->thumbnail_url}\">"; ?> </li> <?php endforeach; ?> </ul> <?php endif; ?> ※追加したい条件 $categories = []; foreach (get_categories() as $category) { $categories[$category->cat_ID] = $category; } function set_other_data($post) { // アイキャッチIDを取得 $post_thumbnail_id = get_post_thumbnail_id($post); // アイキャッチ画像の確認 if ($post_thumbnail_id) { // 存在する $image_src = wp_get_attachment_image_src($post_thumbnail_id); // サムネイルの画像URLを設定 $post->thumbnail = $image_src[0]; } else { // 存在しない $post->thumbnail = 'noimage.jpg'; } // カテゴリーIDを取得 $post->categories = wp_get_post_categories($post->ID); // コメントテキスト if (0 == $post->comment_count) { // コメントなし $post->comments = __('No Comments'); } else { // コメントあり $post->comments = $post->comment_count.'件のコメント'; } // コメントリンク $post->comments_link = get_comments_link($post->ID); }

    • ベストアンサー
    • PHP
  • WordPressの コメント欄 に関する質問です(2)

    WordPressの コメント欄 に関する質問です(2) コメントのURLを必須にする方法をを調査しています 名前 aaaaaaaaaaaaaaaaaaaa メールアドレス bbbbbbbbbbbbbbbbb URL  cccccccccccc を入力する箇所が下記にあります 名前とメールアドレスは必須ですが、 URLを必須にするにはどのような記述にすればいいのでしょうか? 元になる全文はこちらです http://44fsdfa.blogspot.com/p/blog-page.html 下記のように 変更しましたが、URLを入力しなくてもすんなり投稿されてしまいます URLもメールと同じように必須にするには 他にどこを見ればいいのでしょうか? -------------------------------------- <form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform"> <?php if ( is_user_logged_in() ) : ?> <p><?php printf(__('Logged in as <a href="%1$s">%2$s</a>.', 'kubrick'), get_option('siteurl') . '/wp-admin/profile.php', $user_identity); ?> <a href="<?php echo wp_logout_url(get_permalink()); ?>" title="<?php _e('Log out of this account', 'kubrick'); ?>"><?php _e('Log out &raquo;', 'kubrick'); ?></a></p> <?php else : ?> <p><input type="text" name="author" id="author" value="<?php echo esc_attr($comment_author); ?>" size="22" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?> /> <label for="author"><?php _e('aaaaaaaaaaaaaaaa', 'kubrick'); ?> <?php if ($req) _e("(公開)", "kubrick"); ?></label></p> <p><input type="text" name="email" id="email" value="<?php echo esc_attr($comment_author_email); ?>" size="22" tabindex="2" <?php if ($req) echo "aria-required='true'"; ?> /> <label for="email"><?php _e('bbbbbbbbbbbbbbbb (必須)', 'kubrick'); ?> <?php if ($req) _e("(非公開)", "kubrick"); ?></label></p> <p><input type="text" name="url" id="url" value="<?php echo esc_attr($comment_author); ?>" size="22" tabindex="3" <?php if ($req) echo "aria-required='true'"; ?> /> <label for="author"><?php _e('ccccccccccccccccc', 'kubrick'); ?> <?php if ($req) _e("(公開)", "kubrick"); ?></label></p> <?php endif; ?>

    • ベストアンサー
    • PHP
  • WordPressの コメント欄 に関する質問です

    WordPressの コメント欄 に関する質問です コメントのURLを必須にする方法をを調査しています 名前 aaaaaaaaaaaaaaaaaaaa メールアドレス bbbbbbbbbbbbbbbbb URL  cccccccccccc を入力する箇所が下記にあります 名前とメールアドレスは必須ですが、 URLを必須にするには どのような記述にすればいいのでしょうか? -------------------------------------- <form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform"> <?php if ( is_user_logged_in() ) : ?> <p><?php printf(__('Logged in as <a href="%1$s">%2$s</a>.', 'kubrick'), get_option('siteurl') . '/wp-admin/profile.php', $user_identity); ?> <a href="<?php echo wp_logout_url(get_permalink()); ?>" title="<?php _e('Log out of this account', 'kubrick'); ?>"><?php _e('Log out &raquo;', 'kubrick'); ?></a></p> <?php else : ?> <p><input type="text" name="author" id="author" value="<?php echo esc_attr($comment_author); ?>" size="22" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?> /> <label for="author"><?php _e('aaaaaaaaaaaaaaaa', 'kubrick'); ?> <?php if ($req) _e("(公開)", "kubrick"); ?></label></p> <p><input type="text" name="email" id="email" value="<?php echo esc_attr($comment_author_email); ?>" size="22" tabindex="2" <?php if ($req) echo "aria-required='true'"; ?> /> <label for="email"><?php _e('bbbbbbbbbbbbbbbb (必須)', 'kubrick'); ?> <?php if ($req) _e("(非公開)", "kubrick"); ?></label></p> <p><input type="text" name="url" id="url" value="<?php echo esc_attr($comment_author_url); ?>" size="22" tabindex="3" /> <label for="url"><?php _e('cccccccccccccccc', 'kubrick'); ?><?php if ($req) _e("(公開)", "kubrick"); ?></label></p> <?php endif; ?> ----------------------------- 全文はこちらです http://44fsdfa.blogspot.com/p/blog-page.html

    • ベストアンサー
    • PHP
  • WordPressで孫ページ一覧を取得

    下記のコードで子ページ一覧を取得していたのですが、子ページ一覧ではなく孫ページ一覧を取得する必要が出てきました。 <?php $parentId = get_the_ID(); $args = 'posts_per_page=-1&post_type=page&orderby=menu_order&post_parent='.$parentId; query_posts($args); if (have_posts()) : while (have_posts()) : the_post(); ?> <div class="child-box"> <a href="<?php the_permalink(); ?>"><img src="<?php echo wp_get_attachment_url( get_post_thumbnail_id() ); ?>" width="190" alt=""></a> <p class="title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p> <p>価格:<span class="price"><?php $selling_price = get_field('selling_price'); echo $selling_price."円"; ?></span></p> </div> <?php endwhile;?> <?php wp_reset_query(); ?> <?php else:?> <?php endif;?> 上記のような形で孫ページ一覧を取得する方法をご存知のかた、是非ご教授ください。

    • ベストアンサー
    • PHP
  • Wordpressにおいてカスタム投稿の読み込み

    Wordpressにて美容系ポータルサイトを作っています。 お店情報のカスタム投稿 口コミのカスタム投稿 の二つ、そしてトップページとの連動を作りたいと思っています。 まずはお店情報にはサロン名やら営業時間やらキャンペーンメニューなどがポストタイプ(salon_posttype)にて入っています。 口コミには行ったサロン名や、感想、名前などがポストタイプ(review_posttype)で入っています。 そこでお店情報のページに、 そのお店の口コミの投稿を表示させたいと思っています。 つまり、review_posttypeにて入れた、'salonname'のキーがそのページのページ名=(サロン名)と同じであれば表示、で行けるかなと構文を書きましたが、ここからがわかません。 <?php query_posts('&post_type=review_posttype'); while(have_posts()) : the_post(); ?> <?php if( get_post_meta(get_the_ID(), 'salonname', true) != '' ):?> ↑↑↑ここを"もしsalonname=今見ているページの題名なら"にしたいです。↑↑↑ <p class="title"><?php echo get_post_meta(get_the_ID(), 'salonname', true);?></p> <p class="naiyou"><?php echo get_post_meta(get_the_ID(), 'review_naiyou', true);?></p> <p class="detail"><a href="<?php the_permalink() ?>">詳しくはこちら</a></p> <?php endif;?> <?php endwhile; ?> <?php wp_reset_query(); ?> どこをどうしたらいいでしょうか?そもそもここまでも合っていますか?

    • 締切済み
    • PHP
  • Wordpressのコメント欄受付・表示について。

    WordPress 2.8.6で構築 現在全てのブログでコメント受付が非表示になっていますが、その中の1つのカテゴリのブログだけでコメント欄を表示させるのが目的です。 phpの知識が追い付かずネットでも解決方法が見つけられず、以下のcomments.phpを修正してカテゴリの設定を変更するイメージでしたが理解が追い付きません。 どなたかお詳しい方いらっしゃいますでしょうか? <?php // Do not delete these lines if (isset($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename($_SERVER['SCRIPT_FILENAME'])) die ('Please do not load this page directly. Thanks!'); if ( post_password_required() ) { ?> <p class="nocomments"><?php _e('This post is password protected. Enter the password to view comments.', 'kubrick'); ?></p> <?php return; } ?> <!-- You can start editing here. --> <?php if ( have_comments() ) : ?> <h3 id="comments"><?php comments_number(__('No Responses', 'kubrick'), __('One Response', 'kubrick'), __('% Responses', 'kubrick'));?> <?php printf(__('to “%s”', 'kubrick'), the_title('', '', false)); ?></h3> <div class="navigation"> <div class="alignleft"><?php previous_comments_link() ?></div> <div class="alignright"><?php next_comments_link() ?></div> </div> <ol class="commentlist"> <?php wp_list_comments();?> </ol> <div class="navigation"> <div class="alignleft"><?php previous_comments_link() ?></div> <div class="alignright"><?php next_comments_link() ?></div> </div> <?php else : // this is displayed if there are no comments so far ?> <?php if ( comments_open() ) : ?> <!-- If comments are open, but there are no comments. --> <?php else : // comments are closed ?> <!-- If comments are closed. --> <p class="nocomments"><?php _e('Comments are closed.', 'kubrick'); ?></p> <?php endif; ?> <?php endif; ?> <?php if ( comments_open() ) : ?> <div id="respond"> <h3><?php comment_form_title( __('Leave a Reply', 'kubrick'), __('Leave a Reply for %s' , 'kubrick') ); ?></h3> <div id="cancel-comment-reply"> <small><?php cancel_comment_reply_link() ?></small> </div> <?php if ( get_option('comment_registration') && !is_user_logged_in() ) : ?> <p><?php printf(__('You must be <a href="%s">logged in</a> to post a comment.', 'kubrick'), wp_login_url( get_permalink() )); ?></p> <?php else : ?> <form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform"> <?php if ( is_user_logged_in() ) : ?> <p><?php printf(__('Logged in as <a href="%1$s">%2$s</a>.', 'kubrick'), get_option('siteurl') . '/wp-admin/profile.php', $user_identity); ?> <a href="<?php echo wp_logout_url(get_permalink()); ?>" title="<?php _e('Log out of this account', 'kubrick'); ?>"><?php _e('Log out &raquo;', 'kubrick'); ?></a></p> <?php else : ?> <p><input type="text" name="author" id="author" value="<?php echo esc_attr($comment_author); ?>" size="22" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?> /> <label for="author"><small><?php _e('Name', 'kubrick'); ?> <?php if ($req) _e("(required)", "kubrick"); ?></small></label></p> <p><input type="text" name="email" id="email" value="<?php echo esc_attr($comment_author_email); ?>" size="22" tabindex="2" <?php if ($req) echo "aria-required='true'"; ?> /> <label for="email"><small><?php _e('Mail (will not be published)', 'kubrick'); ?> <?php if ($req) _e("(required)", "kubrick"); ?></small></label></p> <p><input type="text" name="url" id="url" value="<?php echo esc_attr($comment_author_url); ?>" size="22" tabindex="3" /> <label for="url"><small><?php _e('Website', 'kubrick'); ?></small></label></p> <?php endif; ?> <!--<p><small><?php printf(__('<strong>XHTML:</strong> You can use these tags: <code>%s</code>', 'kubrick'), allowed_tags()); ?></small></p>--> <p><textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"></textarea></p> <p><input name="submit" type="submit" id="submit" tabindex="5" value="<?php _e('Submit Comment', 'kubrick'); ?>" /> <?php comment_id_fields(); ?> </p> <?php do_action('comment_form', $post->ID); ?> </form> <?php endif; // If registration required and not logged in ?> </div> <?php endif; // if you delete this the sky will fall on your head ?>

    • ベストアンサー
    • PHP
  • 「CSSで1つの要素に複数のクラスを指定する」に対応したブラウザは?

    恥ずかしながら、最近ようやく『同一idは一つのページ内で複数用いるべきではない』の意図するところが分かってきました。これまで、この事を理解していなかったがために、 aaa ←文字色:青、背景色:黄 bbb ←文字色:緑、背景色:黄 ccc ←文字色:青、背景色:赤 ddd ←文字色:緑、背景色:赤 といった表現を実現するために、 ---CSSファイル内の記述--- .blue{color:blue;} .green{color:green;} #bg_yellow{background-color:yellow;} #bg_red{background-color:red;} ---HTMLファイル内の記述---- <div class="blue" id="bg_yellow">aaa</div> <div class="green" id="bg_yellow">bbb</div> <div class="blue" id="bg_red">ccc</div> <div class="green" id="bg_red">ddd</div> というようなソースをよく書いておりました。この場合、idの意味を理解して、解決するには、例えば下の3通りの方法があるように思います。 (1)IDを4つ作成し、1つずつ適用する ---CSSファイル内の記述--- #blue_bg_yellow{color:blue;background-color:yellow;} #green_bg_yellow{color:green;background-color:yellow;} #blue_bg_red{color:blue;background-color:red;} #green_bg_red{color:green;background-color:red;} ---HTMLファイル内の記述---- <div id="blue_bg_yellow">aaa</div> <div id="green_bg_yellow">bbb</div> <div id="blue_bg_red">ccc</div> <div id="green_bg_red">ddd</div> (2)クラスを4つ作成し、1つずつ適用する ---CSSファイル内の記述--- (1)の『#』を『.』にする ---HTMLファイル内の記述---- (1)の『id』を『class』にする (3)クラスを4つ作成し、2つずつ適用する ---CSSファイル内の記述--- .blue{color:blue;} .green{color:green;} .bg_yellow{background-color:yellow;} .bg_red{background-color:red;} ---HTMLファイル内の記述---- <div class="blue bg_yellow">aaa</div> <div class="green bg_yellow">bbb</div> <div class="blue bg_red">ccc</div> <div class="green bg_red">ddd</div> 今回の例では、数も少なく、どれでもそれほど変わらない感じですが、この(3)の書き方には、どれほどのブラウザが対応しているのでしょうか? 個人的に使用しております ・Firefox 2.0 ・Internet Explorer 6.0 では動作するのですが、それ以外のブラウザでの動作に関してご存知の方は、ぜひ教えて下さい。(特にMacは持っていませんので、Macのブラウザの情報は非常にありがたいです) ある程度のブラウザで動作するようなら、 .b,strong{font-weight:bold;} .i,em{font-style:italic;} .u,ins{text-decoration:underline;} .s,del{text-decoration:line-through;} .u_s{text-decoration:underline line-through;} のように、よく使いそうな表現をまとめたスタイルシートを作ろうかな、などと考えております。打ち消しながら下線引く事なんかはまずないとは思いますが、これは例えばの話です。 長文を最後までお読みいただきありがとうございました。

    • 締切済み
    • CSS
  • RSSと投稿記事を交互に表示させたい

    内容の修正が必要ですが原因がわかりません 1.投稿に画像やカテゴリーなどが表示されず、タイトルと日付けのみ表示されている 2.RSS画像にURLがついておらず画像のみ表示されている 3.RSSの画像がない場合ダミー画像を表示させたいが書き方が調べてもわからない <?php $dbh = connect_db(); $categories = []; foreach (get_categories() as $category) { $categories[$category->cat_ID] = $category; } function set_other_data($post) { // アイキャッチIDを取得 $post_thumbnail_id = get_post_thumbnail_id($post); // アイキャッチ画像の確認 if ($post_thumbnail_id) { // 存在する $image_src = wp_get_attachment_image_src($post_thumbnail_id); // サムネイルの画像URLを設定 $post->thumbnail = $image_src[0]; } else { // 存在しない $post->thumbnail = 'noimage.jpg'; } // カテゴリーIDを取得 $post->categories = wp_get_post_categories($post->ID); // コメントテキスト if (0 == $post->comment_count) { // コメントなし $post->comments = __('No Comments'); } else { // コメントあり $post->comments = $post->comment_count.'件のコメント'; } // コメントリンク $post->comments_link = get_comments_link($post->ID); } delete_old_rss($dbh);//接続オブジェクトを渡す //RSS保存 $dbh = connect_db();//① $stmt = $dbh->prepare('insert into rss_feed (title, link, date, img) values (?, ?, ?, ?) on duplicate key update title=?, link=?, date=?, img=?');//② $url1 = get_rss_site_url(); foreach ($url1 as $url) { if (($rss = @simplexml_load_file($url)) === false) { continue; } foreach ($rss->item as $item) { $dc = $item->children('dc', true); $date = date('Y-m-d H:i:s', strtotime($dc->date)); if ($date < $delete_date) { continue; } $title = $item->title; $link = $item->link; $content = $item->children('content', true); $result = preg_match('/<img[^>]*src=\"([^"]+)\"[^>]*>/i', $content->encoded, $matches); if (1 == $result) { $img = $matches[1]; } else { $img = ''; } $stmt->execute([$title, $link, $date, $img, $title, $link, $date, $img]); } } if (ctype_digit($_REQUEST['page'])) { $current_page = (int) $_REQUEST['page']; } else { $current_page = 1; } if ($current_page > $wp_query->max_num_pages) { $current_page = $wp_query->max_num_pages; } $block_per_page = 2; $rss_per_block = 18; $posts_per_block = $wp_query->post_count / $block_per_page; //RSS読み込み $rss_per_page = $block_per_page * $rss_per_block; $rss_offset = ($current_page - 1) * $rss_per_page; $sql = 'SELECT * FROM rss_feed ORDER BY date DESC LIMIT ?,?'; $stmt = $dbh->prepare($sql); $stmt->bindParam(1, $rss_offset, PDO::PARAM_INT); $stmt->bindParam(2, $rss_per_page, PDO::PARAM_INT); $stmt->execute(); $rss_items = $stmt->fetchAll(PDO::FETCH_OBJ); $posts_per_page = $block_per_page * $posts_per_block; $posts_offset = ($current_page - 1) * $posts_per_page; $args = [ 'posts_per_page' => $posts_per_page, 'offset' => $posts_offset, ]; $post_items = get_posts($args); //表示 for ($i = 0; $i < $block_per_page; ++$i) { echo '<h2>ブロック</h2>'; echo '<h3>RSS</h3>'; for ($j = 0; $j < $rss_per_block; ++$j) { $item_index = $i * $rss_per_block + $j; if ($item_index >= count($rss_items)) { break; } $item = $rss_items[$item_index]; echo '<ul>'; echo "<li class=\"sitelink\"><a href=\"{$item->link}\">{$item->title}</a></li>"; echo "<li class=\"sitelink\"><a href=\"{$item->link}\">site</a></li>"; echo "<li class=\"sitedate\">{$item->date}</li>"; if (!empty($item->img)) { echo "<li><img src=\"{$item->img}\" width=\"100\"></li>"; } echo '</ul>'; } echo '<h3>投稿</h3>'; for ($j = 0; $j < $posts_per_block; ++$j) { $item_index = $i * $posts_per_block + $j; if ($item_index >= count($post_items)) { break; } $item = $post_items[$item_index]; echo '<ul>';   echo "<li><a href=\"{$item->guid}\">{$item->post_title}</a></li>"; echo "<li>{$item->post_date}</li>"; echo '</ul>'; } }

    • ベストアンサー
    • PHP

専門家に質問してみよう