• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:WordPressの質問(q10044117)の続)

WordPressの質問(q10044117)の続

このQ&Aのポイント
  • WordPressの質問(q10044117)について続報です。
  • タイトルから表示されていない状態でのページナビの修正について質問しています。
  • 現在のコードや確認に使用したコードなども共有しています。

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

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (746/5661)
回答No.65

・ASは=のようなものだと思うのですが、meta_valueとaccess_countをなぜつなげる必要があるのでしょうか? ASは「=」や「つなげる」ようなものではありません。 テーブルや列に別名をつけるものです。 phpMyAdminで試してみるとわかると思います。 例えば、以下のSQLを実行すると、 ---- SELECT post_title FROM wp_posts ---- 一覧にはテーブルの列名「post_title」がそのまま表示されます。 次に以下のようなas句を追加してみてください。 ---- SELECT post_title AS タイトル FROM wp_posts ---- すると、一覧の見出しは「タイトル」になります。 このように元の名前とは別の名前を付けて参照するためのものです。 今はカテゴリーランキングのアクセスカウントを表示しなくなっているので、別名access_countを付けた意味がなくなってしまいました。 表示していた時はおそらく「$term->access_count」のようにして使っていたかと思います。 別名をつけなかった場合は「$term->meta_value」と書けば済む話しです。 ですが、meta_valueではなんの値かわかりにくいため、access_countとしておけば、アクセスカウントであることがわかりやすくなります。 ・wp_terms AS t についてもお聞きしたいのですが、tと命名した列にwp_terms ASテーブルを設置するという認識で間違いないでしょうか? これも同じことで、元の名前とは別の名前を付けて参照するため、です。 設置と言われると何か新しくそこに用意したような感じがしますが、 別の名前にしているだけで、元のものとかわりありません。 テーブルに別名をつけるのは、列とは少し違う意味です。 今は以下のように書いていますが、 ---- FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id ---- 別名をつけなかった場合は以下のように、 ON句にテーブル名を書きます。 ---- FROM wp_terms INNER JOIN wp_term_taxonomy ON wp_terms.term_id = wp_term_taxonomy.term_id ---- ここだけ見ると1回ずつ書くだけなのでどうと言うこともありませんが、 他にもtやttのところがあるので、それを全部テーブル名で書くと、 やたら長くなって見にくくりますし、 タイプミスをする頻度が上がるかも知れません。 tやttにするのは省略して短く書くためと言うのがひとつです。 他にもASを使う理由と言うか絶対に必要な場合もあります。 今のところそのようなSQLを書くことがないので説明は割愛します。

php_learn
質問者

お礼

質問の期限が心配でしたので、新たに質問を立てさせていただきました。よろしくお願いいたします。 https://okwave.jp/qa/q10063418.html ※実装予定のボタンイメージ https://imgur.com/cLfHf4Z.jpg ※参考サイト http://animesoku.com/archives/31869926.html

php_learn
質問者

補足

Q.テーブルに別名をつけるのは、列とは少し違う意味です。 他にもtやttのところがあるので、それを全部テーブル名で書くと、 やたら長くなって見にくくりますし、 タイプミスをする頻度が上がるかも知れません。 A.アドバイスありがとうございます。別名ではないかとも考えたのですが、列に別名を付けるメリットがわかりませんでした。 関数から値を取得したい場合わかりずらいから別名を名付けたということですね。 なるほど確かに1つだと問題ないように見えますが、複数テーブルにもなると見にくいですね。 短縮してミスを減らすためですね勉強になりました、ありがとうございます。覚えておきます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (64)

  • dell_OK
  • ベストアンサー率13% (746/5661)
回答No.54

・名前を変更して渡す処理しか実装を考えたことがないため見当がつきません。 はい、それでいいと思います。 引数で渡す方法もあるのですが、 他のところも変更する必要があるので、思案していました。 名前を変更する方法で実装してみてください。 $post_items[]にため込んでいますが、 この名前を変更するのがいいと思います。 例えば、$stack_itemsとかですね。 ため込んでいるものから表示用へ取り出すのは表示処理の前で。 ---- $post_items = array_slice($stack_items, $posts_offset, $posts_per_page); display_rss_post_2(); ---- ページナビ用の件数は、ため込んでる方を使う。 ---- $post_count = count($stack_items); ---- 私が試していないので不安ですが、 こんな感じで実装してみてください。

php_learn
質問者

補足

A.修正ありがとうございます。まだよく理解できていないのですが、検索用のSQLとページナビ用のSQLを1つにまとめるという認識であってますでしょうか? display_rss_post_1();の前に追加しないのは、画像1タイトル1は何件目から何件を表示する必要がないからでしょうか? search.phpでSQLを1まとめにするべきか理解できていないためエラーが表示されております。 ※エラー文 Warning: array_slice() expects parameter 1 to be array, null given in /home/zblgibzx/public_html/wp-content/themes/sample_theme/search.php on line 141 ※該当箇所 $post_items = array_slice($stack_items, $posts_offset, $posts_per_page); // 表示 if (1 == $tn) { display_rss_post_1(); } else { $post_items = array_slice($stack_items, $posts_offset, $posts_per_page); display_rss_post_2(); } ※該当ファイル https://wandbox.org/permlink/8rAxZ88Rdz7hBYif

全文を見る
すると、全ての回答が全文表示されます。
  • dell_OK
  • ベストアンサー率13% (746/5661)
回答No.53

・カテゴリーがアーカイブに含まれるというのは記事の登録データとして理解できるのですが、 検索ページは含まれないのでしょうか? 含まれないと思っていいと思います。 ・その他に圧縮可能なコードはありますでしょうか? 別途関数にするものではありませんが、 検索ページの検索結果表示処理とページナビ用処理がほとんど同じところですね。 前者は検索対象の何件目から何件を取得していて、 後者は検索対象の全件を取得しています。 つまり、後者の中に前者は含まれているわけです。 なので、SQLで取得する処理は後者のものだけでいいことになります。 改めてSQL文を見てみましたが、 前者の件数指定には意味がないことが発覚しました。 その件数には前後の記事が含まれていないからです。 SQLで取得したものおよび前後処理で追加されたものが配列$post_itemsに入っています。 表示処理では、この配列のうち何件目から何件を表示するような細工をします。 PHPに配列の一部を取り出す関数array_slice()がありますので、 それ自体は簡単にできるのですが、 取り出したものを$post_itemsに入れる必要があります。 なぜなら、display_rss_post_2()でglobalを使って受け渡ししているからです。 これがやっかいです。 説明はまた後日にさせてください。 ・一気に変更するのが不安でしたので、一時的に保留しておりました。 アップロードされていたコードで問題なさそうです。 ところで確認なのですが、 記事のIDと投稿日付の大小関係は、 入れ違いにならないようなデータになっていますか。 検索やカテゴリーでIDの降順にしましたが、 これはあまりいい案ではなかったようです。 と言うか、投稿日時でよかったと言うか。 SQLで取得するものについては問題ないと言えば問題ないのですが、 前後の記事を取得する関数get_adjacent_post()が、 どうも、投稿日時で見て前後の記事を探しているような気がしています。 まだこまかく確認いていないのですが、 もしそうだとすると、 記事のIDよりも投稿日時がちゃんと順序よくなっていないといけない感じです。 確認したらまたお伝えします。

php_learn
質問者

補足

A.解説ありがとうございます。SQLをまとめるという発想はなかったため勉強になります。 確かに前後の記事を抽出できない場合は件数指定の意味がないですね。 配列$post_items→array_slice()→$post_itemsということでしょうか… 2回同じ関数名に渡すのは確かに難しい気がします… 名前を変更して渡す処理しか実装を考えたことがないため見当がつきません。 記事のIDと投稿日付の大小関係は、気になって調べてみたのですが,左が必ず大きくなるようです。 試しに日付けを逆転させてみたところ、投稿テスト66と投稿テスト65がセットになっておりました。 IDも右が大きくなり逆転しています。 10/14/3:07,10/09/12:03 投稿テスト72,投稿テスト68 10/09/12:02,10/01/8:24 投稿テスト67,投稿テスト66 10/01/8:21,9/30/12:31 投稿テスト65,投稿テスト64

全文を見る
すると、全ての回答が全文表示されます。
  • dell_OK
  • ベストアンサー率13% (746/5661)
回答No.52

【アーカイブ ページナビ その2】 アーカイブのページナビはカテゴリーと同じやり方で大丈夫そうです。 ---- function get_template_url($template_number, $check_search) { if ($check_search && is_category()) { $category = single_cat_title('', false); $sub = "category/{$category}"; } elseif ($check_search && is_archive()) { $y = get_query_var('year'); $m = get_query_var('monthnum'); $sub = "{$y}/{$m}"; } elseif (1 === $template_number || $check_search && is_search()) { $sub = ''; } else { $sub = "画像{$template_number}タイトル1"; } return home_url($sub); } ---- 気を付けるのは、カテゴリー判定処理より後に書くことです。 なぜかと言うと。 カテゴリーページでは、 is_category()がtrueになるのに加えて、 is_archive()もtrueになるようです。 つまり、カテゴリーページはアーカイブに属すると言うことになります。 もしこのアーカイブ判定処理を先に書いてしまうと、 カテゴリーページの時でもアーカイブの処理に流れてしまうので、 そうならないよう、後に書く必要があります。 アーカイブの処理、カテゴリーの処理、の順でどうしても書きたい、 と言うようなことはないと思いますが、 もしそのようなことがあった場合は、 以下のように、アーカイブだけどカテゴリーではない、と書きます。 ---- if ($check_search && is_archive() && !is_category()) { $y = get_query_var('year'); $m = get_query_var('monthnum'); $sub = "{$y}/{$m}"; } elseif ($check_search && is_category()) { $category = single_cat_title('', false); $sub = "category/{$category}"; ---- カテゴリーを優先して判定すれば、ややこしくしなくて済むので、 どうしてもって時くらいでいいと思います。 でも、このことがわかってないと、 うっかり順番を変えて書いて、 コードだけ見ると問題なさそうなのに、 期待通りに動作してくれないことになったりします。 そうならないためにも、好きな順番で書いたり、 後で順番を変えられても大丈夫なようにもできます。 ---- if ($check_search && is_archive() && !is_category()) { ~ } elseif ($check_search && is_archive() && is_category()) { ---- if ($check_search && is_archive() && is_category()) { ~ } elseif ($check_search && is_archive() && !is_category()) { ---- 私がWordPressのことを調べていると、 このように両方の判定をきちんと書いている人達がいました。 ですが、私はなるべく省略して書きたい派で、 似たようなことを何度も書いて、書き間違えたくないですし、 それで、最初に書いた書き方になったわけです。

php_learn
質問者

お礼

カテゴリーページでは、 is_category()がtrueになるのに加えて、 is_archive()もtrueになるようです。 つまり、カテゴリーページはアーカイブに属すると言うことになります。 A.解説ありがとうございます。表示することができました。 疑問があるのですが、カテゴリーがアーカイブに含まれるというのは記事の登録データとして理解できるのですが、 検索ページは含まれないのでしょうか? &&でコードを書くと便利そうですね、見にくいので今回はまとめた方がいいように見えますが。 確かに順番でミスが起こりそうな気がします。 なるほどifとelseifで好きな順番にも対応できるのですね。勉強になりました。 以前知恵袋の方でもコードをまとめた方がいいという指摘を頂いたのですが、その時はよくわかりませんでした。 コードは見える形で残すべきだと考えていたからです。 同じ機能のコードをまとめる機会が増えたことで、コードを圧縮する重要性に気が付きました。 search.phpとcategory.phpとarchive.phpからdisplay.phpまで4つのファイルで共通する処理は最後にまとめるという話を以前していたと思うのですが、 まとめられるコード(共通するコード)を確認してみたところページナビの設定についてのみでした。 その他に圧縮可能なコードはありますでしょうか? archive.phpについて、以前dell_okさんがページナビの機能していないとおっしゃっていたことですが、 同じくSQLが原因でページナビが表示されておらずコードを変更いたしました。一気に変更するのが不安でしたので、一時的に保留しておりました。 //表示設定 //ページ番号チェック $block_per_page = 2; //ページあたりブロック件数 $limitSect1 = 5; // タイトルのみの件数 $limitSect2 = 4; // 画像と画像の下にタイトルの件数 $limitSect3 = 4; // 画像と画像の右にタイトルの件数 $rss_per_block = $limitSect1 + $limitSect2 + $limitSect3; // ブロックあたりRSS件数 //RSS読み込み $rss_per_page = $block_per_page * $rss_per_block; $rss_offset = ($current_page - 1) * $rss_per_page; //※テーブル名の変更 $sql = "SELECT * FROM {$rss_table_name} ORDER BY date DESC LIMIT %d,%d"; $query = $wpdb->prepare($sql, $rss_offset, $rss_per_page); //SQL分実行と結果取得 $rss_items = $wpdb->get_results($query); $group_per_block = 5; //ブロックあたり投稿グループ件数 //投稿読み込み $posts_per_group = $tn; // 投稿グループあたり投稿件数 $posts_per_page = $block_per_page * $group_per_block * $posts_per_group; // ページあたり投稿件数 $posts_offset = ($current_page - 1) * $posts_per_page; //投稿オフセット ※該当ファイル https://wandbox.org/permlink/fJFeLTF4wGSnwsB7 ↓ 下記の補足は一部しかコピーできていないため無視してください

php_learn
質問者

補足

//表示設定 //ページ番号チェック $block_per_page = 2; //ページあたりブロック件数 $limitSect1 = 5; // タイトルのみの件数 $limitSect2 = 4; // 画像と画像の下にタイトルの件数 $limitSect3 = 4; // 画像と画像の右にタイトルの件数 $rss_per_block = $limitSect1 + $limitSect2 + $limitSect3; // ブロックあたりRSS件数 //RSS読み込み $rss_per_page = $block_per_page * $rss_per_block; $rss_offset = ($current_page - 1) * $rss_per_page; //※テーブル名の変更 $sql = "SELECT * FROM {$rss_table_name} ORDER BY date DESC LIMIT %d,%d"; $query = $wpdb->prepare($sql, $rss_offset, $rss_per_page); //SQL分実行と結果取得 $rss_items = $wpdb->get_results($query); $group_per_block = 5; //ブロックあたり投稿グループ件数 //投稿読み込み $posts_per_group = $tn; // 投稿グループあたり投稿件数 $posts_per_page = $block_per_page * $group_per_block * $posts_per_group; // ページあたり投稿件数 $posts_offset = ($current_page - 1) * $posts_per_page; //投稿オフセット

全文を見る
すると、全ての回答が全文表示されます。
  • dell_OK
  • ベストアンサー率13% (746/5661)
回答No.51

・投稿テスト36のことが気になっております。 私はなんとなく下2桁で比較してて、一瞬戸惑いましたが、よく見てください、左の方が大きいですからね。 ==== (16526)(16451) 投稿テスト36 ====

php_learn
質問者

補足

回答ありがとうございます。失礼いたしました。 左の方が大きかったようです。

全文を見る
すると、全ての回答が全文表示されます。
  • dell_OK
  • ベストアンサー率13% (746/5661)
回答No.50

【カテゴリー ページナビ その2】 ・$check_searchが2つの意味合いになりますね。これはシステム的にエラーは起きないのでしょうか? 意味合いを「ページナビ用か他のパターンへのリンク用か」に変えてしまいましょう。 ページナビ用がtrue、他のパターンへのリンク用がfalseです。 動作的には『「検索ページかどうか」をチェックするかどうか』と変わらないものです。 言いかえると『「カテゴリーページかどうか、もしくは、検索ページかどうか」をチェックするかどうか』です。 動作にかかわる影響はありません、と言うか、共通で使えるものとして利用しているので、エラーは起きません。 まったく用途がことなるものであれば、簡単に利用はできないですが、この場合は問題ありません。 「『なにかしら』をチェックするかどうか」なので、名前を「$check」とかに変えてもいいかも知れません。 それをいきなりやらなかったのは、コードの変更する箇所が増えて、質問者さまがわかりにくくなったらいけないと思ったからです。 この場合、名前を変更しただけで動作が変わるわけではありませんが、余計なところに気をまわさせたくありませんでした。 その結果、別のこととして気になられたようですが、それもさせないために、カテゴリーページかどうか用に新しく引数を追加することも考えました。 こんな感じになります。 ---- function get_template_url($template_number, $check_search, $check_category) ---- display_other_template()から呼ぶのはこうなりますし、 ---- $url = get_template_url($i, false, false); ---- display_pagenavi()から呼ぶのはこうなります。 ---- $url = get_template_url($tn, true, true); ---- 同じfalseを2回書くか、同じtrueを2回書くか、になります。 もし、他からも呼ぶことがあって、以下のように、trueとfalseを組み合わせて書くようなことがあればそうする必要はありました。 ---- $url = get_template_url($tn, true, false); $url = get_template_url($tn, false, true); ---- でも、そのような呼び方をすることはいまのところないため、trueひとつでtrueの処理、falseひとつでfalseの処理が仕分けることができればいいと思うわけです。 それでひとつの引数を共通で使うことにしました。 ・前後の処理は不要というのがよくわかりませんでした。 以前聞いた話しでは、画像2のふたつの記事セットは同じカテゴリーが、画像3のみっつの記事セットは同じカテゴリーが設定される、だったと思います。 つまり、カテゴリーを条件にすれば、必ず記事のセットとなる前後もしくは前中後のすべてが取得できるはずです。 それをIDの降順にすれば、自然に前後もしくは前中後がセットで並んでいることになります。 なので、わざわざ記事1件ごとに前後の記事を取得する必要はないわけです。 ・single_cat_titleというのが画像1だと仮定するコードは必要ないのでしょうか? 質問を理解できないでいます。 「single」と言うのが気になっているのでしょうか。 と言うか、私は気になっています。 現在のカテゴリーページのカテゴリー名を表示または返す関数です。 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/single_cat_title なぜこのような名前になっているのかわかりませんが、「single」はなくてもいいような気がします。 名付けた人の意図は知らず、関数や変数の名前と言うのは、後から見た人がなんとなく意味があるように感じてしまいます。 それは、自分自身でも同じことで、過去に名付けた自分は、後から見た自分とはすでに別人なので、なぜこのような名前にしたのかと思うこともあります。 本当は名前はなんでもいいはずなのに、なんでもいいからこそですが、なぜこのような名前にしたのかと、後でわからなくならないよう、名づける規則を自分の中で持っておいた方がいいです。 先ほどの「$check_search」ものちのちそんなことになるかもしれません。 この「single」と、画像1の「single_rss_feed1」の「single」と関係があると思われたのでしたら、まったく無関係です。 ・画像2タイトル1の時に左側の方がIDが大きくない場合も生じているのですが、問題はないでしょうか? 確認してみましたが、すべて左側のIDが大きいです。 あやしげなのはここですが、ここのことを言われてますか。 ==== (16526)(16451) 投稿テスト36 ====

php_learn
質問者

補足

カテゴリーを条件にすれば、必ず記事のセットとなる前後もしくは前中後のすべてが取得できるはずです。 それをIDの降順にすれば、自然に前後もしくは前中後がセットで並んでいることになります。 あやしげなのはここですが、ここのことを言われてますか。 ==== (16526)(16451) 投稿テスト36 ==== A.アドバイスありがとうございます。同じ機能で併用するのであれば問題ないのですね。 なるほどチェックが2つになると確かに分かりずらい印象です。確かに検索とカテゴリーを同時に実装することがあるとしたら2つ書くべきですね。 前後の同じカテゴリーのものは表示されております。記事の順番はそれほど関係ないかもしれませんね。 single_rss_feed1と関係があるものだと考えておりました… 理解できました。ありがとうございます。 dell_okさんのおっしゃる通り投稿テスト36のことが気になっております。 負荷の軽減のために意図的にteamを並べるコードを削除したのか、IDを並べるコードは代用できるからと考えたのか意図していることがわからず 疑問でした。

全文を見る
すると、全ての回答が全文表示されます。
  • dell_OK
  • ベストアンサー率13% (746/5661)
回答No.49

【カテゴリー ページナビ その1】 先にカテゴリーのページナビをされますか。 WordPressのURLについて、 私が認識している範囲で説明しましょう。 まずは記事一覧のページですが、 こんな感じだと思います。 画像1タイトル1のURL https://www.last.cfbx.jp/ 画像1タイトル1はトップページなのでホームURLです。 画像2タイトル1のURL https://www.last.cfbx.jp/画像2タイトル1/ 画像3タイトル1のURL https://www.last.cfbx.jp/画像3タイトル1/ 画像2と画像3のURLの規則は、 固定ページをテンプレートとして使ってるので、 「ホームURL/固定ページ名(テンプレート名)」です。 検索ページの規則は、 「ホームURL/?s=検索文字」です。 アーカイブの規則は、 「ホームURL/年/月」です。 カテゴリーの規則は、 「ホームURL/category/カテゴリー名」です。 なのでカテゴリーのページナビの規則は、 「ホームURL/category/カテゴリー名/?cp=ページ番号」になります。 パターンの指定も必要なので、実際は、 「ホームURL/category/カテゴリー名/?cp=ページ番号&tn=テンプレート番号」ですね。 いただいたコードは検索にならって作られたと思いますが、 「ホームURL/?category=~」ではうまくいきません。 上記の規則のようにするには、 get_template_url()をどうにかする必要があります。 ページナビを別に作るのでしたら、 あわせてこの関数も別に作るようになってくると思います。 ですが、そこまでしなくても大丈夫そうでした。 get_template_url()を変更して、 カテゴリーの時には「category/カテゴリー名」を付加するようにしてみました。 ---- function get_template_url($template_number, $check_search) { if ($check_search && is_category()) { $category = single_cat_title('', false); $sub = "category/{$category}"; } elseif (1 === $template_number || $check_search && is_search()) { $sub = ''; } else { $sub = "画像{$template_number}タイトル1"; } return home_url($sub); } ---- こうなると$check_searchの名前が面白くありませんが、 ページナビ用か他のパターンへのリンク用かの引数のようになってきました。 あと、カテゴリーページの方ですが、 記事取得のSQLはIDの降順にしたのと、 前後の処理は不要なので直接$post_itemsに取得するようにしたのと、 ページナビ用のSQLにもカスタムフィールドを追加しました。 ---- /* 検索件数指定取得 */ $sql = " SELECT post.* FROM wp_posts AS post INNER JOIN wp_term_relationships ON 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 INNER JOIN wp_postmeta AS meta ON post.ID = meta.post_id WHERE wp_term_taxonomy.term_id = %d AND post.post_type = 'post' AND post.post_status = 'publish' AND meta.meta_key = %s ORDER BY post.ID DESC LIMIT %d,%d "; $query = $wpdb->prepare($sql, $cat, $tk, $posts_offset, $posts_per_page); $post_items = $wpdb->get_results($query); //表示 if (1 == $tn) { display_rss_post_1(); } else { display_rss_post_2(); } //ページリンク $sql = " SELECT COUNT(*) AS count FROM wp_posts AS post INNER JOIN wp_term_relationships ON 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 INNER JOIN wp_postmeta AS meta ON post.ID = meta.post_id WHERE wp_term_taxonomy.term_id = %d AND post.post_type = 'post' AND post.post_status = 'publish' AND meta.meta_key = %s "; $query = $wpdb->prepare($sql, $cat, $tk); $results = $wpdb->get_results($query); $post_count = $results[0]->count; display_pagenavi();?> ----

php_learn
質問者

補足

こうなると$check_searchの名前が面白くありませんが、 ページナビ用か他のパターンへのリンク用かの引数のようになってきました。 あと、カテゴリーページの方ですが、 記事取得のSQLはIDの降順にしたのと、 前後の処理は不要なので直接$post_itemsに取得するようにしたのと、 ページナビ用のSQLにもカスタムフィールドを追加しました。 A.解説ありがとうございます。先にカテゴリーページから作成予定です。 検索ページはワードを渡す必要があったから&sでした。忘れておりました、申し訳ありません。 確かに?cp=ページ番号とするのが普通ですね。 $check_searchが2つの意味合いになりますね。これはシステム的にエラーは起きないのでしょうか? IDを降順にするものを削除するのは、前後の記事の処理でIDの大きい順から表示されるように変更したからということだと思うのですが、 前後の処理は不要というのがよくわかりませんでした。 $category = single_cat_title('', false);というコードについてお聞きしたいのですが、single_cat_titleというのが画像1だと仮定するコードは必要ないのでしょうか? 表示することができました。ありがとうございます。 画像2タイトル1の時に左側の方がIDが大きくない場合も生じているのですが、問題はないでしょうか? ※表示画面 https://imgur.com/O6bRhng.jpg ※該当URL http://www.last.cfbx.jp/category/%e3%82%ab%e3%83%86%e3%82%b4%e3%83%aa%e3%83%bc6/?tn=2

全文を見る
すると、全ての回答が全文表示されます。
  • dell_OK
  • ベストアンサー率13% (746/5661)
回答No.48

・他のパターンへのリンクというのは画像2のアーカイブ、画像3のアーカイブと画像2のカテゴリー、画像3のカテゴリーとしてリンクを分けるということでしょうか いいえ、そうではありません。 これを表示するために、 ==== 画像2の一覧へ 画像3の一覧へ ==== 以下のコードを追加していただきたかっただけです。 ---- <?php display_other_template();?> ---- アーカイブにはこれが付けられていないようです。 アーカイブおよびカテゴリーの検索フォームもお忘れなく。

php_learn
質問者

補足

回答ありがとうございます。テンプレートの追加ですね、失礼いたしました。 検索フォームも追加してみました。 カテゴリー用にページナビを作成してURLに&categoryを追加するコードを考えてみたのですが、他に別の機能を作成するべきでしょうか? コードが間違えていないのか確認お願い致します。 ※該当ファイル https://wandbox.org/permlink/qhHm9ZiUpse0SfSP ※カテゴリー用に作成したページナビ function category_pagenavi() { echo '<div>ページナビ</div>'; global $tn; global $current_page; global $posts_per_page; global $post_count; $pages = ceil($post_count / $posts_per_page); $display_pages = 5; $display_page_count = 0; $url = get_template_url($tn, true); $categories = get_categories_array(); var_dump($categories); $categories = ''; if (is_category()) { $categories = get_categories_array(); if (!empty($categories)) { $categories = "&categories={$categories}"; } } for ($i = 1; $i <= $pages; ++$i) { if (1 == $i) { $page_text = '<<'; echo "<a href=\"{$url}?cp={$i}&tn={$tn}{$categories}\">{$page_text}</a> "; if ($current_page > 1) { $j = $current_page - 1; } else { $j = 1; } $page_text = '<'; echo "<a href=\"{$url}?cp={$j}&tn={$tn}{$categories}\">{$page_text}</a> "; } if ($i >= $current_page && ++$display_page_count <= $display_pages) { $page_text = $i; echo "<a href=\"{$url}?cp={$i}&tn={$tn}{$categories}\">{$page_text}</a> "; } if ($i == $pages) { if ($current_page < $pages) { $j = $current_page + 1; } else { $j = $pages; } $page_text = '>'; echo "<a href=\"{$url}?cp={$j}&tn={$tn}{$categories}\">{$page_text}</a> "; $page_text = '>>'; echo "<a href=\"{$url}?cp={$i}&tn={$tn}{$categories}\">{$page_text}</a> "; } } }

全文を見る
すると、全ての回答が全文表示されます。
  • dell_OK
  • ベストアンサー率13% (746/5661)
回答No.47

【アーカイブ ページナビ その1】 ・display.phpに設置済みのページナビに追加するとややこしくなりそうなので、別に分けてみました。 1まとめにした方がいいのでしょうか? そうですね。 最初は別々にしておいて、動作確認ができたら、まとめる、のが、 いいと言うか、私はそんな感じで作ることが多いです。 それで思い出しましたが、 検索ページのごっそり同じ処理もまとめた方がいいです。 ただ、いままでのまとめるのとは少し違う感じのものなので、 ページナビが落ち着いたら考えたいと思います。 それはそれとして。 まずは、アーカイブのページナビですが、 いただいたコードはカテゴリーっぽい記述に見えます。 アーカイブのURLは /年/月 を付加するようになると思います。 その前に、アーカイブやカテゴリーにも、 他のパターンへのリンクがあった方がいいと思いますし、 検索フォームも標準のものではなく、 他のページと同じものを使った方がいいと思いますので、 そのようにしていただけると助かります。 それと、私がいただいている最終のアーカイブのコードでは、 ページナビ用のSQLの以下の LIKE が期待通りに取得できませんでした。 以前は取得できていたかどうかわかりませんが、 そんな方法があるんだ、と思ったのを覚えています。 ---- AND (post.post_date LIKE %s OR post.post_modified LIKE %s ) ---- 私の環境で動作しないと話しをすすめにくいため、 以下のように変更しました。 ----変更前 //ページリンク $mm = str_pad($m, 2, '0', STR_PAD_LEFT); $date_query = "{$y}-{$mm}%"; $sql = " SELECT COUNT(*) AS count FROM wp_posts AS post INNER JOIN wp_postmeta AS meta ON post.ID = meta.post_id WHERE meta.meta_key = 'single_rss_feed1' AND post.post_type = 'post' AND post.post_status = 'publish' AND (post.post_date LIKE %s OR post.post_modified LIKE %s ) "; $query = $wpdb->prepare($sql, $date_query, $date_query); $results = $wpdb->get_results($query); $pages = ceil($results[0]->count / $posts_per_page); display_pagenavi();?> ----変更後 //ページリンク $sql = " SELECT COUNT(*) AS count FROM wp_posts AS post INNER JOIN wp_postmeta AS meta ON post.ID = meta.post_id WHERE meta.meta_key = %s AND post.post_type = 'post' AND post.post_status = 'publish' AND YEAR(post.post_date) = %d AND MONTH(post.post_date) = %d "; $query = $wpdb->prepare($sql, $tk, $y, $m); $results = $wpdb->get_results($query); $post_count = $results[0]->count; display_pagenavi();?> ---- 単純に、投稿日時の年と月を条件にしています。 アーカイブ一覧display_archive()では投稿日時でグループ化しているので、 ページナビ用でも投稿日時だけを条件にしました。 更新日時(post_modified)を含むとおかしくなります。

php_learn
質問者

補足

単純に、投稿日時の年と月を条件にしています。 アーカイブ一覧display_archive()では投稿日時でグループ化しているので、 ページナビ用でも投稿日時だけを条件にしました。 A.修正ありがとうございます。後ほどまとめるようにします。 カテゴリーページとアーカイブページを間違えておりました、申し訳ありません。 他のパターンへのリンクというのは画像2のアーカイブ、画像3のアーカイブと画像2のカテゴリー、画像3のカテゴリーとしてリンクを分けるということでしょうか… 想定では画像2、画像3のリンク(page-secound.phpとpage-third.php)のカテゴリー、アーカイブリンクから飛ぶように考えていたのですが… page-common.phpからcategory.phpに誘導したい場合、それぞれの記事からとカテゴリーランキングにリンクを設置することになります。 パターンを分ける場合、それぞれの記事とカテゴリーにif分岐を設置するか、 page-secound.php,page-third.phpからそれぞれのカテゴリーページを作成してそちらに誘導する必要がありそうです。 アーカイブのSQLに関してそのような状態だと理解しておきます。 ※page-common.php https://wandbox.org/permlink/i8Ff7fyA0d588Bo3

全文を見る
すると、全ての回答が全文表示されます。
  • dell_OK
  • ベストアンサー率13% (746/5661)
回答No.46

【検索 ページナビ その23】 ・検索ページで固定ページ名が必要で、ページナビで固定ページが必要だと考えていたのですが、逆でしょうか? 逆とまでは言えません。 ページナビで固定ページ名が必要なのは確かですが、 それは検索ページ以外においてです。 検索ページのページナビでは、 固定ページ名があってはいけないようです。

php_learn
質問者

補足

回答ありがとうございます。検索ページにおいてですね。覚えておきます。

全文を見る
すると、全ての回答が全文表示されます。
  • dell_OK
  • ベストアンサー率13% (746/5661)
回答No.45

【検索 ページナビ その22】 ・二重に判定を設けるということはis_search()のチェックが甘いということでしょうか? チェックが甘いと言うわけではありません。 二重のように感じたかも知れませんがそう言うことでもありません。 言葉で言うと『「検索ページかどうか」をチェックするかどうか』です。 「検索ページかどうか」がis_search()で、 『「それ」をチェックするかどうか』が$check_searchです。 $check_searchがどのようなものかについては、 これがなかった場合を考えるとわかりやすいかも知れません。 コードはこうなります。 テンプレート番号が1か、現在のページが検索ページであれば、 固定ページ名が付加されなくなります。 ---- if (1 === $template_number || is_search()) { $sub = ''; } else { $sub = "画像{$template_number}タイトル1"; } ---- 他のパターンへのリンク生成display_other_template()は、 一覧ページ、アーカイブ、カテゴリー、検索ページなど、 いろいろなページから呼ばれます。 そしてそれはメニューのリンクのようなものなので、 どのページから呼ばれても同じURLを生成する必要があります。 でも、このコードで実行すると、 検索ページの時には固定ページ名が付加されなくなってしまいます。 結果、検索ページに表示される他のパターンへのリンクのURLが、 すべて「画像1の一覧へ」と同じURLになってしまうのです。 実際に試してみていただければわかると思います。 検索ページと言えども、ここには固定ページ名が必要なのです。 一方、ページナビのリンク生成display_pagenavi()では、 こちらもいろいろなページから呼ばれますが、 それぞれ違うURLを生成する必要があります。 画像1には固定ページ名は不要ですし、 画像2と画像3には固定ページ名が必要です。 アーカイブでは年月、カテゴリーではカテゴリー名が必要です。 ※この処理はまだ実装していないのでいずれ問題になると思います。 検索ページにおいては、上記のものとは少し違いますが、 固定ページ名などは付加してはならず、 かつ、sパラメータを付加する必要があります。 上記のコードになっていれば、 検索ページにおいて、その要件を満たした処理をしてくれます。 ですが、このget_template_url()が、 ページナビのリンクでは正常に動作して、 他のパターンへのリンクでは正常に動作しないのは困ります。 そこで、ページナビのリンクでは、 『「検索ページかどうか」をチェックする』ようにtrueを。 ---- $url = get_template_url($tn, true); ---- 他のパターンへのリンクでは、 『「検索ページかどうか」をチェックしない』ようにfalseを。 ---- $url = get_template_url($i, false); ---- と言う感じになります。

php_learn
質問者

補足

検索ページと言えども、ここには固定ページ名が必要なのです。 A.解説ありがとうございます。『「検索ページかどうか」をチェックするかどうか』なるほど… 確かに固定ページ名がないとすべて画像1に収束されてしまいますね、 検索ページで固定ページ名が必要で、ページナビで固定ページが必要だと考えていたのですが、逆でしょうか? 次にカテゴリーページを修正していきたいのですが、こちらもパラメーターがわたっていないため2ページ目が表示できていません。 display.phpに設置済みのページナビに追加するとややこしくなりそうなので、別に分けてみました。 1まとめにした方がいいのでしょうか? is_category()とis_archive()という関数もありましたので、そちらを使う予定です。 ※作成済みのページナビ(display.php) function display_pagenavi() { } ※アーカイブ用に作成したページナビ function archive_pagenavi() { echo '<div>ページナビ</div>'; global $tn; global $current_page; global $posts_per_page; global $post_count; $pages = ceil($post_count / $posts_per_page); $display_pages = 5; $display_page_count = 0; $url = get_template_url($tn, true); $categories = get_categories_array(); var_dump($categories); $categories = ''; if (is_category()) { $categories = get_categories_array(); if (!empty($categories)) { $categories = "&categories={$categories}"; } } for ($i = 1; $i <= $pages; ++$i) { if (1 == $i) { $page_text = '<<'; echo "<a href=\"{$url}?cp={$i}&tn={$tn}{$categories}\">{$page_text}</a> "; if ($current_page > 1) { $j = $current_page - 1; } else { $j = 1; } $page_text = '<'; echo "<a href=\"{$url}?cp={$j}&tn={$tn}{$categories}\">{$page_text}</a> "; } if ($i >= $current_page && ++$display_page_count <= $display_pages) { $page_text = $i; echo "<a href=\"{$url}?cp={$i}&tn={$tn}{$categories}\">{$page_text}</a> "; } if ($i == $pages) { if ($current_page < $pages) { $j = $current_page + 1; } else { $j = $pages; } $page_text = '>'; echo "<a href=\"{$url}?cp={$j}&tn={$tn}{$categories}\">{$page_text}</a> "; $page_text = '>>'; echo "<a href=\"{$url}?cp={$i}&tn={$tn}{$categories}\">{$page_text}</a> "; } } }

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 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
  • wordpressで、質問です。

    投稿画面にAdvanced Custom Fields のプラグインを入れて、カスタム投稿ページeventに 日付の入力エリアをJQのデータピッカーで表示させました。 開催場所も、同じプラグインでテキストエリアで設置して入力するようにしました。 日付は、データピッカーから入力したら「2015/06/15」の形でデータベースのwp_postmetaのmeta_key「event」の meta_valueに入ります。 開催場所をテキストで入力すると「▽□△ホール」という形でデータベースのwp_postmetaのmeta_key「scene」の meta_valueに入ります。 例えば、カスタム投稿記事でwp_posts の ID88 post_type が event の記事にたいして wp_postmeta に meta_id に 220、 post_id が 88 、meta_key に event 、meta_value に 2015/06/15 。 meta_id に 220、 post_id が 88 、meta_key に scene 、meta_value に ▽□△ホール と入ります。 この場合に、カスタム投稿でeventに投稿した、post_id88の記事情報に開催場所と日付のデータをくっつけて詳細ページに表示するには どのようにしたら良いのでしょうか。 sqlでSELECTで一回目、wp_posts でデータをとり、 二回目、wp_postmeta で開催日をとり 三回目、wp_postmeta で場所をとり 表示する と考えましたらなんだかナンセンスで、長々しくなってしまいました。 まとめて書こうと、しましたらデータが1件の投稿につき2個づつ出てしまい、困っています。 また、meta_valueはlongtxt型なのですが、入っている2015/06/15のデータをDATE型にして絞り込みや並べ替えをしたいのですが どのようにしたら良いでしょうか。

    • 締切済み
    • PHP
  • WordPressの質問(q10103578)の続

    下記のコードファイルにIDとスタンプを追加したいのですが、変数がセットされているか確認すべきかどうか知識不足もあり判断ができないためアドバイス頂いてから決めようと考えています。 宜しくお願い致します。 echo "ID:{$wpdb->insert_id}"; echo '<img class="selimg" src="'.$stamps[$stamp].'">'; ※現在のコード https://wandbox.org/permlink/rnlDqXMzNIOqimxW

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

    不正なトークンと表示されるため、single-regist.phpから下記のコードを削除したのですが、そちらは問題ないでしょうか? 送信時にトークンが必要だと思いますので、登録結果画面には必要ないのではないかと考えております。 //確認画面でデータが安全であることが確認された上で$_SESSIONを経由して画面遷移するが、登録結果画面へは不正アクセスできるから必須 if (empty($_SESSION['token']) || empty($_POST['token']) || $_SESSION['token'] !== $_POST['token']) { exit('不正トークン'); } ※single-regist.phpの11行目からトークンのコードになります https://wandbox.org/permlink/vCbUEZFcvQf2n1DK

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

    アップロードされたカメラ画像を非表示にするコードを追加したのですが、表示するためのURLを追加するコードが抜けており追加いたしました。 上記とは別にアップロードされたファイルをエンコードするコードも抜けているのではないかと思っております。 旧コードでは対象ファイルではない場合にアラートで警告ダイアログを表示するコードとは別にエンコードするコードがあるため最新コードにも追加すべきではないかと考えております… 下記のコードは追加すべきでしょうか?(single-input.php の15行目から38行目まで) $attach = []; if (!empty($_SESSION['attach'])) { foreach ($_SESSION['attach']['data'] as $i => $data) { if (!empty($data)) { $base64 = base64_encode($data); } $type = $_SESSION['attach']['type'][$i]; switch ($type) { case 'image/jpeg': case 'image/png': $attach[] = '<img style="height: 100px;" src="data:'.$type.';base64,'.$base64.'">'; break; case 'video/mp4': $attach[] = '<video style="height: 100px;" controls src="data:'.$type.';base64,'.$base64.'">'; break; case 'application/pdf': $attach[] = '<iframe style="height: 100px;" src="data:'.$type.';base64,'.$base64.'"></iframe>'; break; default: $attach[] = ''; break; } } } ※最新コード https://wandbox.org/permlink/my2wffcXlhMQZFvW ※旧コード https://wandbox.org/permlink/cfzsJgBFcYrcIDI1

    • ベストアンサー
    • PHP
  • WordPress PCとスマホで表示を切り替える

    PCでは記事一覧5件、スマホでは3件表示するようにしたいです。 条件分岐タグを使って、PCとスマートフォンで記事の一覧表示を切り替える方法がうまくいきませんでした。 https://handywebdesign.net/2017/11/wp-is-mobile/ 改造前のコード(問題なく表示できました) <ul> <?php $latest_posts = get_posts( array( 'posts_per_page' => 5, // 表示する記事の数 'category_name' => '投稿ID',// 投稿IDを取得 'fields' => 'ids', ) ); foreach( $latest_posts as $post ): setup_postdata( $post ); if( has_post_thumbnail() ) { $post_thumb = get_the_post_thumbnail( '', 'post_thumbnail' ); // アイキャッチがあるときはアイキャッチを表示 } else { $post_thumb = '<img src="' . get_template_directory_uri() . '/img/noimage.gif" width="100" height="100" alt="デフォルト画像" />'; // アイキャッチがないときは《noimage.gif》を表示 } $post_categories = get_the_category(); // カテゴリーを取得 $post_content = wp_trim_words( get_the_content(), 30, '…' ); // 30字分を抜粋 ?> <li <?php post_class(); ?>> <a href="<?php the_permalink(); ?>"> <div class="blogListimg"> <?php echo wp_kses_post( $post_thumb ); ?> </div> <!-- アイキャッチここまで --> <p class="post-time blogDt"><?php the_time('Y.m.d'); ?></p> <p class="post-categories blogCt"><?php echo esc_html( $post_categories[0]->name ); ?></p> <h3 class="post-title"><?php the_title(); ?></h3> <p class="post-content blogBf"><?php echo esc_html( $post_content ); ?></p> </a> </li> <?php endforeach; wp_reset_postdata(); ?> </ul> PCとスマートフォンで記事の一覧表示を切り替えるコード 参考サイトを参考にfunctions.phpにfunction is_mobile() コードを追加。 トップページのphpに以下を改造。 <?php if ( is_mobile() ) : ?> <?php $latest_posts = get_posts( array( 'posts_per_page' => 5, // 表示する記事の数 'category_name' => '投稿ID',// 投稿IDを取得 'fields' => 'ids', ) ); foreach( $latest_posts as $post ): setup_postdata( $post );  ・  ・  ・ <?php else: ?> <?php $latest_posts = get_posts( array( 'posts_per_page' => 3, // 表示する記事の数 'category_name' => '投稿ID',// 投稿IDを取得 'fields' => 'ids', ) ); foreach( $latest_posts as $post ): setup_postdata( $post );  ・  ・  ・ <?php endforeach; wp_reset_postdata(); ?> </ul> 結果は真っ白になってしまいました。 HTMLソースも真っ白です。 空白はSublime Textのテキストエディターを使っていますので、確認しております。 どこが違うか、教えてくださいますか? よろしくおねがいします。

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

    回答が遅くなってしまい申し訳ありません… 確認画面で分からないところがあり、アドバイスお願い致します。 ➀アップロードされたファイルを表示画面と同じ大きさ(height: 350px; width: 528px;)で表示したい場合どうすれば良いでしょうか? HTML を書き換えるコードの画像サイズを変更しても変化がないためどうすべきか悩んでおります。 ➁名前と画像アイコンの表示順を逆にしたいのですが、bbs_quest_input.php の452行目の divNamaePartialParts.appendChild(usericonImg); と 455行目の divNamaePartialParts.appendChild(child); コードで順番を変更させる方法が分からず教えて頂きたいです。 上記とは別の疑問になるのですが、質問文、質問タイトル、名前それぞれ残り1文字入力可能な状態で制限がかかってしまいます。 これは以内というコードになっているからでしょうか?何が原因となっているのか分からずアドバイス頂きたいです。 ※現在のコード https://wandbox.org/permlink/piR82q0rnnWvVphI ※確認ページ表示画面 https://imgur.com/AucGqLf.png ※質問掲示板 http://www.irasuto.cfbx.jp/%e8%b3%aa%e5%95%8f%e6%8e%b2%e7%a4%ba%e6%9d%bf/

    • ベストアンサー
    • PHP
  • 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
  • wordpressのテーマカスタマイズにについて

    wordpressのテーマカスタマイズにについて 既存のテーマを使用しカスタマイズしています。 list.phpというファイルを新規作成しアップロードしました。 <?php get_header(); ?> <dl class="feed"> <?php $posts = get_posts('numberposts=5&order=desc'); foreach($posts as $post): ?> <dd><span class="day"><?php echo date("Y年m月d日", strtotime($post->post_date)); ?></span><a href="javascript:;" onclick="window.open('<?php the_permalink(); ?>','popup','width=800,height=700,scrollbars=yes,resizable=no,status=yes');" id="post-<?php the_ID(); ?>"><?php the_title(); ?></a> </dd> <?php endforeach; ?> </dl> </div> <?php get_footer(); ?> と記述してあります。 ディレクトリパスhttp://ドメイン/wpディレクトリ名/wp-content/themes/テーマ名/list.php にアクセスすると Fatal error: Call to undefined function get_header() in /home/sites/chicappa.jp/users/サーバ名/web/wpディレクトリ名/wp-content/themes/テーマ名/list.php on line 1 とエラーが出てしまいます。 list.phpを正しく閲覧するためにはどうしたら良いでしょうか。 どなたかご回答お願いいたします。

    • ベストアンサー
    • 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
このQ&Aのポイント
  • 賃貸収入の確定申告についての疑問を持っている方へ。初年度は収入20万円以下で申告不要でしたが、今年度は60万円の家賃年収で申告が必要になる可能性があります。申告の必要性や青色申告の方法、個人資産としての物件取り扱い、減価償却の可否などについて知りたい方は必見です。
  • 賃貸収入の確定申告についての基本情報をまとめました。初年度は20万円以下の収入で申告不要ですが、家賃年収が60万円を超える場合、申告が必要になる可能性があります。申告の方法や青色申告のメリット、物件の取り扱いや減価償却の可否など、具体的な疑問に対する解答が得られます。
  • 賃貸収入の確定申告に関する疑問を解決しましょう。初年度は申告不要でも、収入が増えると申告が必要になる場合があります。申告の方法や青色申告のメリット、個人資産としての物件取り扱い、減価償却の可否などについて詳しく説明します。必要に応じて相談先を探す前に、まずはこちらの情報を確認してみてください。
回答を見る