WordPressの記事表示に問題が発生しています

このQ&Aのポイント
  • WordPressの質問(q10032703)に関連して、記事が表示されない問題が発生しています。
  • set_template_info関数は、テンプレート情報を設定するためのものです。
  • get_template_number関数は、テンプレート番号を取得するためのものです。
回答を見る
  • ベストアンサー

WordPressの質問(q10032703)の続

該当コードからmeta_keyに当てはまる記事を出力したいが、記事が何も表示されない。 function set_template_info() { global $tn; global $tk; global $rss_table_name; global $current_page; $tn = get_template_number(); $tk = get_template_key($tn); $rss_table_name = get_rss_table_name($tn); $current_page = get_current_page(); } function get_template_number() { global $template; $template_number = $_GET['tn']; switch ($template_number) { case '2': break; case '3': break; default: switch (pathinfo($template, PATHINFO_FILENAME)) { case 'page-secound': $template_number = 2; break; case 'page-third': $template_number = 3; break; default: $template_number = 1; } } return $template_number; } function get_template_key($template_number) { if (1 == $template_number) { $template_key = 'single_rss_feed1'; } elseif (2 == $template_number) { $template_key = 'double_rss_feed2'; } elseif (3 == $template_number) { $template_key = 'triple_rss_feed3'; } return $template_key;

  • PHP
  • 回答数82
  • ありがとう数106

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

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.82

基本的に同じコードですのでもとのsearch.phpに戻して、 実行してみてください。 と言いましたが、問題が発生していることを確認してください。 削除したものが表示されるのと、タイトルも何も表示されないことです。

php_learn
質問者

お礼

SQLに関して勘違いがありました。申し訳ありません。 meta.meta_key = ''を変更して検索したところテーブルのデータは記事データと合致しておりました。 SELECT distinct post.* 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_title LIKE '%イ%') ORDER BY post.post_date DESC

php_learn
質問者

補足

削除したものが表示されるのと、タイトルも何も表示されないことです。 A.回答ありがとうございます。削除したものは表示されておらず、タイトルも表示されています。 1つ気付いたことがあるのですが、get_search_query():で出力できなかったタイトルがfilter_input():で出力できています。 何かしらの法則があるようです。 例えばイで検索した際にえいてぃーんカという記事があったと仮定します。 get_search_query():の方では該当記事として出力できていませんが、filter_input():では出力できています。 いくつかこのような記事があり、SQLで検索に使用したコードでもイが含まれるのに出力されない記事があります。 get_search_query():の検索の精度は低い気がしています。 タイトルから表示されていない状態ですが、先にページナビの修正から行うのでしょうか? ※現在表示されている記事 https://imgur.com/IupD3AB.jpg ※現在のコード https://wandbox.org/permlink/VReuDuARbgCZ1OJM ※確認の際に使用したコード SELECT distinct post.* 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_title LIKE '%イ%') ORDER BY post.post_date DESC

その他の回答 (81)

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.81

・RSSとページナビを修正する場合どのようにすれば良いでしょうか? 修正と言うか、あれはテストコードですので、 search.phpはもとのものに戻しておいてください。 私が疑問視していた検索文字の取得は、filter_input()に決定です。 SQL文やデータの取得方法に問題はないこともわかりました。 基本的に同じコードですのでもとのsearch.phpに戻して、 実行してみてください。 なにもしていないので問題は解決していませんが、 問題が発生している状態のコードを改めていただけますか。 display.phpとsearch.phpのみアップロードしてください。

php_learn
質問者

お礼

こちらが最新の質問になります。 期限がきれてしまいましたので、新たに質問させていただきました。 よろしくお願い致します。 https://okwave.jp/qa/q10054200.html

php_learn
質問者

補足

回答ありがとうございます。元々のコードはこちらになります。https://wandbox.org/permlink/EpfcYUSkXmSWDWOZ 検索ワードの取得部分に手を加えたのが下記コードになります。 $search_query = get_search_query();→$search_query = filter_input(INPUT_GET, 's'); 本来は下記のようにする予定ですが、動作確認のためタイトルだけに検索対象を絞っています。 AND (post.post_content LIKE %s OR post.post_title LIKE %s OR post.post_excerpt LIKE %s) $query = $wpdb->prepare($sql, $tk, "%$search_query%", "%$search_query%", "%$search_query%", $posts_offset, $posts_per_page);

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.80

結果を教えてくださってありがとうございます。 search.php内でget_search_query()が実行されるまでに破壊されているかと思って、最小コードで試していただいたのですが、どうもそうではなさそうなので、filter_input()を使うしかなさそうですね。 私の方では問題ないので、何か環境の違いによるものだとして放置します。 filter_input()での検索結果に余計なものがないのでしたら、SQLには問題ないと言うことになります。 これにパターンの条件があるべきなので、条件は絞られる一方で、余計なものは出ないですね。 削除されたと言われていた記事も表示されていませんよね。

php_learn
質問者

お礼

昨日の質問の繰り返しになって申し訳ないのですが、 RSSとページナビを修正する場合どのようにすれば良いでしょうか? 下記のように変更してみたのですが… $sql = " SELECT post.* FROM wp_posts AS post WHERE post.post_type = 'post' AND post.post_status = 'publish' AND (post.post_title LIKE %s) ORDER BY post.post_date DESC LIMIT %d,%d "; $query = $wpdb->prepare($sql, $s,$posts_offset, $posts_per_page);

php_learn
質問者

補足

回答ありがとうございます。 削除されている記事の表示はされていません。

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.79

あのコードは、 問題を調査するための第一歩のものなので、 結果を教えてくださると助かります。 以下のような結果になると思っています。 ==== get_search_query():検索文字 投稿一覧 filter_input():検索文字 投稿一覧 ==== 両方の検索文字が表示されていたら、 get_search_query()は使えると言うことなので、 filter_input()にしなくてもいいと思います。 投稿一覧に、期待しているものが表示されるか、 余計なものが表示されていないか、を教えてください。

php_learn
質問者

補足

A.回答ありがとうございます。 get_search_query():(なし) 全投稿 filter_input():検索文字 検索文字投稿一覧 となっております。get_search_query():は検索文字の取得に失敗しております。 よってget_search_query():は余計なもの(全投稿)が表示されます。

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.78

先の回答は修正ではありません。 search.phpを部分的に書きかえるのではなくて、全体であれだけのコードにして試してください。

php_learn
質問者

補足

回答ありがとうございます。誤解しておりました。 申し訳ありません。 SQLの条件はややこしくなりそうなので今のところタイトルのみで進行していこうと考えています。 RSSとページナビから修正していきたいのですが、下記のように変更しても大丈夫でしょうか? $sql = " SELECT post.* FROM wp_posts AS post WHERE post.post_type = 'post' AND post.post_status = 'publish' AND (post.post_title LIKE %s) ORDER BY post.post_date DESC LIMIT %d,%d "; $query = $wpdb->prepare($sql, $s,$posts_offset, $posts_per_page); ※表示画面 https://imgur.com/fdu0VJZ.jpg https://imgur.com/Gx2lEgd.jpg ※該当URL http://www.last.cfbx.jp/?s=%E3%82%A2&tn=1 http://www.last.cfbx.jp/?s=%E3%82%A4&tn=2

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.77

単純な検索結果ページを作ってみました。 get_search_query()とfilter_input(INPUT_GET, 's')の両方で検索文字を取得しています。 get_search_query()が動作するかしないかを確認できます。 get_search_query()が動作していなくても、filter_input()が動作していればfilter_input()を優先して使えばいいと思います。 get_search_query()が動作していない場合に、filter_input()も動作していなければそれもわかります。 タイトルのみで検索しています。 パターンの条件はないので全パターンが取得されます。 表示もタイトルのみです。 ----search.php <?php $s = get_search_query(); echo "<p>get_search_query():{$s}</p>"; display_posts($s); $s = filter_input(INPUT_GET, 's'); echo "<p>filter_input():{$s}</p>"; display_posts($s); function display_posts($s) { global $wpdb; $sql = " SELECT post.* FROM wp_posts AS post WHERE post.post_type = 'post' AND post.post_status = 'publish' AND (post.post_title LIKE %s) ORDER BY post.post_date DESC "; $s = "%{$s}%"; $query = $wpdb->prepare($sql, $s); $items = $wpdb->get_results($query); echo '<ol>'; foreach ($items as $item) { echo "<li>{$item->post_title}</li>"; } echo '</ol>'; } ---- これで、期待しているものが表示されるか、余計なものが表示されないか確認してみてください。 必要に応じて、パターンの条件を追加したり、表示する項目を追加してください。 現在の状況からすると、まったく動作しない、ことも考えられます。 使用している関数は同じなので、これでまったく動作しない場合はどうにもならない気がします。

php_learn
質問者

補足

get_search_query()が動作していなくても、filter_input()が動作していればfilter_input()を優先して使えばいいと思います。 get_search_query()が動作していない場合に、filter_input()も動作していなければそれもわかります。 A.修正ありがとうございます。get_search_queryは確認したところ機能していないようです。filter_input()は機能しているようです。 エラー文が2つ出ております。 条件を追加する前にエラー文を調べてみて原因を考えてみます。 Warning: count(): Parameter must be an array or an object that implements Countable in /home/zblgibzx/public_html/display.php on line 474 Warning: Invalid argument supplied for foreach() in /home/zblgibzx/public_html/wp-content/themes/sample_theme/search.php on line 96 1つめはif ($item_index >= count($post_items)) { になります。 echo '<h3>投稿</h3>'; echo '<div id="entry-content">'; // 記事全体のid for ($k = 0; $k < $group_per_block; ++$k) { // ここから画像とタイトルの処理 for ($j = 0; $j < $posts_per_group; ++$j) { $item_index = $i * $group_per_block * $posts_per_group + $k * $posts_per_group + $j; if ($item_index >= count($post_items)) { break; } $item = $post_items[$item_index]; set_other_data($item); 2つめはforeach ($search_items as $post) { になります。 if (1 == $tn) { $post_items = $search_items; } elseif (2 == $tn) { $post_ids = []; $post_items = []; foreach ($search_items as $post) { if (in_array($post->ID, $post_ids)) { continue; }

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.76

・現在2つのエラーが発生しています。 エラーと言われるとPHPのエラーが発生しているように思ってしまうので、できれば何か違う表現でお願いします。 例えば、問題、とか。 ・1つは削除した記事がいずれかのテーブルに存在していてプラグインでも削除できない。 テーブルはwp_postだけです。 削除したと言われていますが、削除されていないような気がします。 管理画面から投稿全件を確認してみてください。 プラグインでも削除できないのは投稿(wp_post)のデータが有効なものであるからです。 有効と言うのは、post_statusが'publish'であると言う意味です。 他にも条件はあるかも知れませんが、少なくともこのデータは削除されません。 ・2つめは記事のコンテンツそのものが出力されない。 こちらはそもそもデータが取得できていないような気がします。

php_learn
質問者

補足

・2つめは記事のコンテンツそのものが出力されない。 こちらはそもそもデータが取得できていないような気がします。 A.回答ありがとうございます。申し訳ありません以後問題という表現に致します。 記事が存在しておらずwp_postも確認していますが、どちらにも存在しない記事が出力されておりました。 データの取得に関しては1点思いあたることがあるのですが、下記のようにして$search_queryを渡す必要があったのではないでしょうか? <input type="text" placeholder="ブログ内を検索" name="s" class="searchfield" value="" /> <input type="hidden" name="tn" value="<?php echo $tn; ?>"> 検索ワードはurlを確認するとわたっていましたので、そこから記事の検索に繋がっていないことが原因だと思います。 元のコードですと$post_thumbnail_id = get_post_thumbnail_id($post);となっているため、記事から出力となっています。 これは固定ページの出力には使えますが、検索ページの出力には使えないはずです。 <?PHP $search_query->have_posts()) : ?> <?PHP $post_thumbnail_id = get_post_thumbnail_id; $post->categories = wp_get_post_categories ?> ※参考サイト https://wordpress.stackexchange.com/questions/373042/custom-search-results-page-query-link-permalink-to-post-title-while-separating

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.75

・削除された記事が出力されている これもまた不思議ですね。 ゴミ箱へ移動(削除?)した記事は以下の条件によって取得されないはずだと思うのです。 ---- AND post.post_status = 'publish' ---- なぜなら、ゴミ箱へ移動した記事のpost_statusは trash になっているからです。 プラグインなどで整理しないといけないのは問題ですね。 ・オブジェクト生成の原因が$wpdbから$postを渡していないことだと考えたのですが、認識に間違いはありますでしょうか? そんな感じになっているようにも思えます。 でも質問者さまの言われるように、タイトルや日時が表示されるので、オブジェクトは生成されていると思います。 なんだか、不思議なことだらけですね。

php_learn
質問者

お礼

誤解を生んでしまっていたら申し訳ないです。 現在2つのエラーが発生しています。1つは削除した記事がいずれかのテーブルに存在していてプラグインでも削除できない。 2つめは記事のコンテンツそのものが出力されない。 オブジェクトに関しては勘違いだと思っていたのですが、エラー文やコードの修正から間違いないと思います。 var_dump($search_query);で確認したときに、なぜ0と表示されているのにコンテンツが出力されているのか疑問でしたが、おそらくURLだけが切り替わっています。 <input type="text" placeholder="ブログ内を検索" name="s" class="searchfield" value="" /> <input type="hidden" name="tn" value="<?php echo $tn; ?>"> dell_okさんに以前お伝えしていた画像だけが出力されていないものは過去に削除した記事に関するエラーですので1つめのエラーに該当します。混乱させてしまい申し訳ありません。 以前該当のエラー箇所を削除したときにその下のカテゴリーとコメント数でも同様のエラーが表示されたとお伝えしました。 これは記事のコンテンツの取得に失敗していると伝えてくれているものだと思われます。 ここにタイトルがないのはfunction{}内に処理が書かれていないからです。 ※該当エラー Warning: Creating default object from empty value in /home/zblgibzx/public_html/display.php on line 617 対策としてarryを用いる方法を考えたのですが、どうでしょうか? $argsは必要ないと思いますが、こちらの方法ですと'post_status' => 'publish'を加えることによって削除した記事の出力が制御できるような気がします。 現在のエラーを改善した後になるのですが。 $search_query = new WP_Query()がデータベースからの記事表示で使えるのか疑問でしたが、$argsでも使用されていることを見ると使えるように見えます。 ※参考サイト https://wordpress.stackexchange.com/questions/373042/custom-search-results-page-query-link-permalink-to-post-title-while-separating https://dezanari.com/wordpress-only-search-page-posts/

php_learn
質問者

補足

回答ありがとうございます。 タイトルや日時も実際のところ表示されてないです… (検索が行われずホーム画面がそのまま表示されてます) オブジェクトの生成に失敗していますので、$postを$search quearyから渡すか$wpdbから渡すかどちらかになると思うのですが、どうでしょうか?

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.74

もしかしてphpMyAdminで実行したのでしょうか。 もしそうであれば。 PHPコードに記述するSQLの書き方と、phpMyAdminで実行する書き方は違います。 これまで両方を何度もやってきたので、書き方を比べてphpMyAdminで実行できるSQL文にしてください。

php_learn
質問者

お礼

タイトルや日時が表示されているので、データ取得は問題なさそうです。 エラーメッセージからわかることは、オブジェクトが初期化されていない、とかですが、タイトルや日時が表示されると言うことは、オブジェクトは生成されているので、不思議な現象です。 A.過去の回答から抜粋させていただいたのですが、stringを確認すると、string(0) ""となっていましたので、おそらくの原因はオブジェクトの生成に失敗していることだと思いました。 オブジェクト生成の原因が$wpdbから$postを渡していないことだと考えたのですが、認識に間違いはありますでしょうか? ここで強引に's'という関数を取得しています。 $search_query = get_search_query();→$search_query = filter_input(INPUT_GET, 's');

php_learn
質問者

補足

もしかしてphpMyAdminで実行したのでしょうか。 もしそうであれば。 PHPコードに記述するSQLの書き方と、phpMyAdminで実行する書き方は違います。 これまで両方を何度もやってきたので、書き方を比べてphpMyAdminで実行できるSQL文にしてください。 A.回答ありがとうございます。dell_okさんの過去の回答をみて修正して確認いたしました。 php my adminでは出力されていない削除された記事が出力されている為エラーが起きているようです。 削除した記事がどのデータテーブルに格納されているか調べてそのテーブルからデータを定期的に削除するしかなさそうです… SELECT distinct post.* FROM wp_posts AS post INNER JOIN wp_postmeta AS meta ON post.ID = meta.post_id WHERE meta.meta_key = 'double_rss_feed2' AND post.post_type = 'post' AND post.post_status = 'publish' AND (post.post_title LIKE '%テスト%') ORDER BY post.post_date DESC

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.73

エラーの画像を見てみると、表示されているIDが(16451)と()です。 ID16451とセットの記事を読み込んでいないように見えます。 画像2なので、ID16451にはwhiteを設定しておかないといけないと思いますがどうなっていますか。

php_learn
質問者

お礼

最新の回答になります。加えて伝え忘れたことがあるのですが、オブジェクトの取得に失敗していると思う根拠があります。 異なるワードで検索しても同じ結果で表示されると以前に回答していたのですが、これは画像1タイトル1、画像2タイトル1、画像3タイトル1のコンテンツがそのまま表示されているだけで検索結果はvar_dump($search_query);で確認した通り0件でした。 string(0) "" エラー箇所を削除してもその下でエラーが起きているため共通項の$postからはそのまま記事を引いてこれないのではと考えています。 ※該当コード 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_learn
質問者

補足

回答ありがとうございます。確認してみますと過去に削除した記事でした。 削除したコンテンツがずっと出力されているようです。 もう1つ気になることがあるのですが、下記コードをSQLで試してみたところエラー文が表示されています。 構文のエラーと表示されているのですが、何かしらの問題があるのでしょうか? SELECT distinct post.* 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 (post.post_title LIKE %s) ORDER BY post.post_date DESC LIMIT %d,%d ※エラー文 静的解析: 解析中に 5 個のエラーが見つかりました。 予期しないトークン。 (near "%" at position 267) 予期しないトークン。 (near "d" at position 268) 予期しないトークン。 (near "," at position 269) 予期しないトークン。 (near "%" at position 270) 予期しないトークン。 (near "d" at position 271) SQL クエリ: ドキュメント SELECT distinct post.* 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 (post.post_title LIKE %s) ORDER BY post.post_date DESC LIMIT %d,%d MySQL のメッセージ: ドキュメント #1064 - SQL構文エラーです。バージョンに対応するマニュアルを参照して正しい構文を確認してください。 : '%s AND post.post_type = 'post' AND post.post_status = 'publish' AND (post....' 付近 9 行目

  • dell_OK
  • ベストアンサー率13% (740/5645)
回答No.72

・サイトを1から作る前にこのエラーを解消しきれずに$search_queryを使わず別の形で代用していたのを思い出しました。 もしかすると$search_queryが使えないのかもしれません。 そんなことがあったのですね。 フォームの変更を試してみてください。 ところで「$search_queryが使えない」と言う表現は正しくありません。 $search_queryは変数でここでのこれにはなんの問題も責任もありません。 使えていないのはget_search_query()の関数の方と言うべきです。 いえ、使えていないと言うよりも、期待した結果を取得してくれない、と言った方が正しいです。 この関数にもおそらく問題や責任はありません。 それゆえに、そこに至るまでの準備ができていないと言うことで、フォームを作り直す、ということになったのでしょうし。 とにかく使えないのは、変数ではなく関数の方だと認識していただければと思います。

php_learn
質問者

補足

※変更分(画像1のみ出力されている) $search_query = filter_input(INPUT_GET, 's'); アドバイスありがとうございます。 $search_queryを変更することで画像1は半ば強引に出力することができましたが、画像2タイトル1,画像3タイトル1でエラーが復活しております。 画像1タイトル1を確認するとstring(3) "ア"と表示されていますので、3件のみ問題なく出力できていて他は該当なしと判断されています。 該当エラー文を確認すると未定義の変数($post)にプロパティを追加しているとのことですが、 データベースからのデータと投稿データは同列に使えないのではないでしょうか? 以前も似たようなエラーに遭遇した記憶があります。 $wpdb->$postのようにしてDBから直接投稿データを取得するしていないことが原因ではないかと考えたのですがdell_okさんの意見がお聞きしたいです。 ※該当箇所 $post->thumbnail = $image_src[0]; ※該当エラー Warning: Creating default object from empty value in /home/zblgibzx/public_html/display.php on line 617 ※該当ファイル https://wandbox.org/permlink/m1XROxQiCkxF4Mt5 ※表示画面(画像1タイトル1) https://imgur.com/kyWlFgE.jpg https://imgur.com/Gr5d4Ob.jpg ※表示画面(画像2タイトル1) https://imgur.com/0lby2gA.jpg ※表示画面 http://www.last.cfbx.jp/?s=%E3%82%A2&tn=1

関連するQ&A

  • wordpressで投稿記事を3パターン表示したい

    投稿記事を3ファイルに分けて表示したいのですが、うまくいかず全てpage.phpとして表示されます。振り分けることができないのですが、アドバイスよろしくお願いします。 前提として page.php page-secound.php page-third.phpの3ファイルがあり固定ページのテンプレートにしている。 <?php /* Template Name: 画像2タイトル1 Template Post Type: page */ ?> <?php /* Template Name: 画像3タイトル1 Template Post Type: page */ ?> 以下のカスタムフィールド名を各記事に割り振っております。 single_rss_feed1 duuble_rss_feed 2 triple_rss_feed 3 ※1つ目の方法 <!--index.phpの文頭に書くコード--!> <?php if(get_post_meta($post->ID,'single_rss_feed1',true) == 'A'): ?> <?php include(('main-first.php') == 'A'); ?> <?php elseif (get_post_meta($post->ID,'duuble_rss_feed2',true) == 'B'): ?> <?php include(('page-secound.php') == 'B'); ?> <?php elseif (get_post_meta($post->ID,'triple_rss_feed3',true) == 'C'): ?> <?php include(('page-third.php') == 'C'); ?> <?php else: ?> <?php endif; ?> _______________________________ ※2つ目の方法 <!--functions.phpに書くコード--!> function custom_template_include($template) { global $post; if (!is_page()) return $template; if (get_post_meta($post->ID, ' duuble_rss_feed 2')) $new_templete = locate_template(array('sub-secound.php')); if (get_post_meta($post->ID, ' triple_rss_feed 3')) $new_template = locate_template( array( 'sub-third.php' )); if (!empty($new_template)) return $new_template; return $new_template; }

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

    「保存するファイル名につかってはいけない」とのことなのですが、user_add_check.phpの<input type="hidden" name="image_name" value="<?= $user_image['name'] ?>">を使う事はアウトなようです。 自分なりに参考サイトを見て考えてみたのですが、$_SESSION['image']['data']が機能しているのか分からない状態です。 自信がないため2パターン考えてみました。 ※参考サイト https://qiita.com/ryouya3948/items/66294cb445663f2a9d95 user_add.php(要らないもの?) <h2>新規登録</h2> <form method="post" action="user_add_check.php" enctype="multipart/form-data"> <input type="text" name="name" class="user_name_input" placeholder="ユーザー名"> <input type="file" name="image" id="my_image" accept="image/*" multiple> <input class="btn btn-outline-info" type="button" onclick="history.back()" value="戻る"> <input class="btn btn-outline-dark" type="submit" value="登録"> </form> user_add_check.php(入力画面) <?php session_start(); //ファイルの内容を全て文字列に読み込む $_SESSION['userfile']['data'] = file_get_contents($_FILES['userfile']['tmp_name']); //アップロードされたファイルの種類を確認--送られてくる MIME タイプは信用できない--メッセージ全体を偽装できる $_SESSION['userfile']['type'] = exif_imagetype($_FILES['userfile']['tmp_name']); $_SESSION['userfile']['type'] = mime_content_type ($_FILES['userfile']['tmp_name'] ); //画像であるかどうかをexif_imagetype()を使って判別--画像のみ分ける必要があるのか不明 //$_SESSION['userfile']['type'] = exif_imagetype($_FILES['image']['tmp_name']); ?> <img src="image.php"> <form method="post" action="user_add_done.php"> <input type="hidden" name="name" value="<?= $user_name ?>"> <input type="hidden" name="image_name" value="<?= $user_image['name'] ?>"> <input type="button" class="btn btn-outline-info modal_close" onclick="history.back()" value="戻る"> <input type="submit" class="btn btn-outline-dark" value="OK"> </form> image.php(確認画面 バイナリーデータ確認) <?php $load_name = $ext session_start(); switch ($file_ext == $_SESSION['userfile']['type']) { case IMAGETYPE_JPEG: header('content-type: image/jpeg'); break; case IMAGETYPE_PNG: header('content-type: image/png'); break; case IMAGETYPE_GIF: header('content-type: image/gif'); break; case MIME_TYPE_PDF: header('content-type: application/pdf'); break; case MIME_TYPE_MP4: header('content-type: video/mp4'); break; } ?> <?php $load_name = $ext session_start(); switch ($file_ext == $_SESSION['userfile']['type']) { //jpegを表示 case IMAGETYPE_JPEG: header('content-type: image/jpeg'); echo $_SESSION['image']['data']; break; //pngを表示 case IMAGETYPE_PNG: header('content-type: image/png'); echo $_SESSION['image']['data']; break; //pdfを表示 case MIME_TYPE_PDF: header('content-type: application/pdf'); echo( substr( $_SESSION['image']['data'], 0, 5 ) ); break; //mp4を表示 case MIME_TYPE_MP4: header('content-type: video/mp4'); echo( substr( $_SESSION['image']['data'], 4, 4 ) ); break; } ?> ___________________________________________________________ image.php(確認画面 バイナリーデータ確認) <?php function get_file_ext($ext) { //MIMEタイプを取得 $finfo = finfo_open(FILEINFO_MIME_TYPE); $mime_type = finfo_file($finfo, $_SESSION['image']['data']);/*$GET['image']['data']*/ if (FILE_EXT_PNG == $ext && 'image/png' == $mime_type) { } elseif (in_array($ext, [FILE_EXT_JPEG, '.jpg']) && 'image/jpeg' == $mime_type) { $ext = FILE_EXT_JPEG; } else { // バイナリー文字列確認 $contents = file_get_contents($_SESSION['image']['data']); if (FILE_EXT_PDF == $ext && 'application/pdf' == $mime_type && '%PDF-' == substr($contents, 0, 5)) { } elseif (FILE_EXT_MP4 == $ext && 'video/mp4' == $mime_type && 'ftyp' == substr($contents, 4, 4)) { } else { $ext = null; } } return $ext; } ?> user_add_done.php(表示画面 保存拡張子) $_SESSION['image']これを使う //文字列をファイルに書き込む関数 file_put_contents('./image/',$_SESSION['image']);

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

    URLを連番にすべきかuuidにすべきか迷っているのですが、どちらが良いと思われますでしょうか? 一連番号のIDを避けるべきなのであればメジャーなサイトはすべてランダム文字列になっているはずではないかという意見とURLが予測しやすいと攻撃しやすいという意見があるようです。 IDを付ける際にBase58を使う、N 進数の文字列を使うなどuuid意外にも色んな方法があるようで、どうすべきか分かりません、アドバイスお願い致します。 $url = home_url('質問表示画面?'.$row->ID); ※idをautoincrementしない方が良い理由 https://zenn.dev/praha/articles/3c84e3818891c3 ※ユーザIDを連番にしてURLに使っても問題ない https://teratail.com/questions/364664 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11270700181 ※短縮URLの付け方 https://sousaku-memo.net/php-system/71 https://co.bsnws.net/article/256 ※htmlspecialcharsでIDをエスケープ http://lovee7.blog.fc2.com/blog-entry-34.html 質問一覧表示(single-que_list.php) 回答可能なページ(single-complete.php) <?php /* Template Name: que_list 固定ページ: 質問一覧画面 */ get_header(); $sql = 'SELECT * FROM sortable'; $query = $wpdb->prepare($sql); $rows = $wpdb->get_results($query); $upload_dir = wp_upload_dir(); foreach ($rows as $row) { $url = home_url('質問表示画面?'.$row->ID); $pattern = $upload_dir['basedir'].'/attach/'.$row->ID.'_0.*'; $files = glob($pattern); if (empty($files)) { $view = '<img src="ダミー画像パス">'; } else { $info = pathinfo($files[0]); $attach_url = $upload_dir['baseurl'].'/attach/'.$info['basename']; $ext = $info['extension']; switch ($ext) { case 'jpeg': case 'png': $view = '<img style="height: 50px;" src="'.$attach_url.'">'; break; case 'mp4': $view = '<video style="height: 50px;" src="'.$attach_url.'">'; break; case 'pdf': $view = '<iframe style="height: 50px;" src="'.$attach_url.'"></iframe>'; break; default: $view = ''; break; } } echo '<div><a href="'.$url.'">'.$row->unique_id; echo '<div>'.$row->namae.'</div>'; echo '<div>'.$view.'</div>'; echo '<div>'.mb_strimwidth($row->message, 0, 38, '・・・').'</div>'; echo '</a></div>'; } ?>

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

    var_dump($row);で確認したところ登録結果画面と質問表示画面でNULLが表示されております。 コードをたどったところ質問表示画面の$sql = 'SELECT * FROM sortable WHERE URL=%s';で取得に失敗しているのではないかと考えたのですが、エラー原因は分かりますでしょうか? ※データベースにURLは格納されております。 https://imgur.com/5RmSq2Y.jpg ※該当コード $url = substr($_SERVER['REQUEST_URI'], -36); $sql = 'SELECT * FROM sortable WHERE URL=%s'; $query = $wpdb->prepare($sql, $url); $rows = $wpdb->get_results($query); var_dump($row); if (empty($rows)) { echo '質問がみつかりません'; exit; } ________________________________________________________________________ Q.テーブルにカラムを追加して保存するようにしてみてください。 A.アドバイスありがとうございます、下記コードでIPアドレスは保存できるようですが、入力画面、確認画面、表示画面どのタイミングで追加すべきでしょうか? $ip_address = $_SERVER["REMOTE_ADDR"]; //文字列形式から数値 に、数値から文字列形式に変換 $ip_long = ip2long($ip_address); -- ipアドレスのテーブル CREATE TABLE tbl_ips ( `ip` INT(10) NOT NULL ); $sql = "INSERT INTO tbl_ips ( ip ) VALUES ( INET_ATON( $ip ) );" Q.こんな感じになります。 メッセージの一部、については以前やったことがあると思いますので、$row->messageから取得するようにしてみてください。 A.アドバイスありがとうございます、メッセージの一部を取得というコードを考えてみました。1点質問があるのですが、<a href="'.$url.'"></a>を名前、画像、メッセージ全体に1つだけかけたい場合どのようなコードにすればよいのでしょうか? ---- <?php /* Template Name: 質問一覧画面 */ get_header(); $sql = 'SELECT * FROM sortable'; $query = $wpdb->prepare($sql); $rows = $wpdb->get_results($query); $upload_dir = wp_upload_dir(); foreach ($rows as $row) { $url = home_url('質問表示画面?'.$row->URL); $pattern = $upload_dir['basedir'].'/attach/'.$row->ID.'_0.*'; $files = glob($pattern); if (empty($files)) { $view = '<img src="ダミー画像パス">'; } else { $info = pathinfo($files[0]); $attach_url = $upload_dir['baseurl'].'/attach/'.$info['basename']; $ext = $info['extension']; switch ($ext) { case 'jpeg': case 'png': $view = '<img style="height: 50px;" src="'.$attach_url.'">'; break; case 'mp4': $view = '<video style="height: 50px;" src="'.$attach_url.'">'; break; case 'pdf': $view = '<iframe style="height: 50px;" src="'.$attach_url.'"></iframe>'; break; default: $view = ''; break; } } echo '<div><a href="'.$url.'">'.$row->namae.'</a></div>';    echo '<div>'.$view.'</div>'; echo '<div>'.mb_strimwidth($row->message, 0, 38, "・・・").'</div>'; } ---- 昨日教えて頂いた質問掲示板 登録結果画面のタイトルから飛べるページをリンク先として考えておりました。 http://www.irasuto.cfbx.jp/%e9%9b%91%e8%ab%87%e6%8e%b2%e7%a4%ba%e6%9d%bf%e3%80%80%e7%99%bb%e9%8c%b2%e7%b5%90%e6%9e%9c%e7%94%bb%e9%9d%a2/

    • ベストアンサー
    • PHP
  • PHPで一部サイトからRSS情報を取得できない

    PHPを使用して、他のサイトからRSS情報を取得し、 DBにデータを格納する、というような処理をするバッチを作成しています。 SimplePieという無料のライブラリを使用し、 下記のようなファンクションを作成しました。 /* ================= * * RSS情報を最大5件取得 * =================*/ function get_rss_info($feed_url) { // 戻り値 $rss_list = array(); // RSSデータを取得 $feed = new SimplePie(); $feed -> enable_cache(false); $feed -> set_feed_url($feed_url); $feed -> init(); $feed->handle_content_type(); // 過去記事を最大5記事まで取得 $feedItems = $feed -> get_items(0, 5); foreach($feedItems as $item) { // ※自作クラスです $rss = new RSS(); $rss->rss_id = $item -> get_id(); $rss->rss_title = $item -> get_title(); $rss->published_date = $item -> get_date('Y/m/d H:i:s'); $rss->rss_url = $item -> get_permalink(); $rss->rss_text = $item -> get_description(); array_push($rss_list, $rss); } return $rss_list; } 上記のファンクションで、アメブロなどのRSS情報は取得できますし、 一部WordPressサイトのRSS情報も問題なく取得することが出来ました。 しかし、一部のWordPressサイトでは、上記のファンクションを通しても 1つもRSS情報を取得することが出来ず、 配列も空のままで返却されてしまっております。 Feedlyなどの外部サービスで情報が取得できているので、 私のプログラムが悪いのだとは思っているのですが・・・ 自分なりに調査をしてみたのですが、 全く糸口を掴むことができませんでした。 お知恵を貸していただければと思います。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • FlashからPHPへの変数の渡し方について

    初めまして。beterugiusと申します。 ご質問したいのですが、 まず、上下2フレームのindex.phpファイルがあります。 FLASHファイル(top_image.fla)は、シングルフレームのjpegイメージ(三枚の画像をPhotoShopで合成して、一枚のイメージにしてある。)です。 その.flaファイルを書き出した、.swfコンテンツ上をマウスが移動 すると、コンテンツ上のどの部分にマウスがあるかで、下フレームのTHMLが切り替わるようにしたいので、top_image.swf から、index.phpに対して、GETメソッドでページ番号の変数自身を 渡したいのですが、実際にFLASHコンテンツ上をマウスで動かしてみると、ブラウザのアドレス欄に、GETメソッドのクエリー文字列の「?」 だけは追加されているのですが、肝心の変数が渡されておらず、 下フレームのHTMLも切り替わりません。 どうすればちゅんと動くのか、どなたかご回答いただけないでしょうか? -------------------------------------------------------------- 「top_image.fla」 var sendObj:LoadVars = new LoadVars(); var page:Number; function onMouseMove(){ var x:Number = top_image._x; // グラフィックの中心座標 var y:Number = top_image._y; if( 0 <= y && y <= 316 ){ if( 0 <= x && x <= 255 ){ page = 1; sendObj.send("../php/index.php", "page", "GET"); } else if( 256 <= x && x <= 512 ){ page = 2; sendObj.send("../php/index.php", "page", "GET"); } else if(513 <= x && x <= 766 ){ page = 3; sendObj.send("../php/index.php", "page", "GET"); } } } -------------------------------------------------------------- 「index.php」 <html> <head><title>ActionScript2.0</title> <meta http-equiv="content-type" content="application/x-www-form-urlencoded"> </head> <frameset rows="350,*"> <frame name="top" src="../html/top.html"> <?php // Action ScriptからのPOSTデータの取得 $page = $_GET['page']; switch($page){ case 1: print("<frame name='bottom' src='../html/bottom1.html'>"); break; case 2: print("<frame name='bottom' src='../html/bottom2.html'>"); break; case 3: print("<frame name='bottom' src='../html/bottom3.html'>"); break; } if(is_null($page)){ // $page変数の中身がNULL(未定義)の場合 print("<frame name='bottom' src='../html/blank.html'>"); } ?> </frameset> </html> -------------------------------------------------------------

    • ベストアンサー
    • Flash
  • functionsでどこまで括るのが正解なのか

    RSSを取得→格納→表示→定期的にキャッシュをphpで行っております。 index.phpにすべて記載したところfunctions.phpを利用したほうが良い、require_onceでpage.phpなどからindex.phpに読み込むようご指摘をいただいたので、コードを考えてみたのですがどの範囲までfunctionで括るのが正解なのかわかりません。 意見がわかれておりまして、役割によって分けるべきという方と、page.phpのみfunctions.phpを使いそのほかはrequire_onceで読み込めばいいという方と、すべてrequire_onceで読み込めばいいという方の3パターンありました。 どの方法が1番適切でしょうか?コードは以下になります。 <?php //別ファイルにして読み込む場合 function db($hlxclitx_wp1){//DB名を引数として受け取る $dbname //DB接続 try { $pdo = new PDO(“mysql:dbname=”$hlxclitx_wp1”_name;host=”localhost”;charset=utf8″,”hlxclitx_wp1”,”E.HrypHWxNmltXgC5eS26”)); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); return $pdo; }catch (PDOException $e) { echo $e->getMessage(); return $db = null; } } // カテゴリーIDをキーにしたカテゴリー配列を生成 function get_category_name_by_id($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); } //古いデータを削除 //※先に実行する //ものがないものはfunctons.phpに書いても使えないので、require_onceでまとめて読み込む認識 function delete_date_pdo($delete_date) { $sql = 'DELETE FROM rss_feed WHERE date < ?'; $stmt = $dbh->prepare($sql); $delete_date = date('Y-m-d H:i:s', strtotime('-1 week')); //※削除対象日付 $stmt->execute([$delete_date]); } //RSS保存 function save_url_rss($stmt){//本来は値がほしいところでfunction{}するのだろう長さの加減がわからず $url1 = [ 'http://nns2ch.net/index.rdf', 'http://aqua2ch.net/index.rdf', 'https://worldfn.net/index.rdf', ]; $stmt = $dbh->prepare('insert into rss_feed (title, link, date, img) values (?, ?, ?, ?) on duplicate key update title=?, link=?, date=?, img=?'); 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)); //※削除対象日付より古いRSSは保存しない 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]); } } } function one_page_count($post_items){ //表示設定 $current_page = $_REQUEST['page'] ?? 1; //現在ページ $block_per_page = 2; //ページあたりブロック件数 $rss_per_block = 18; //ブロックあたりRSS件数 $posts_per_block = 5; //ブロックあたり投稿件数 //RSS読み込み $rss_per_page = $block_per_page * $rss_per_block; //ページあたりRSS件数 $rss_offset = ($current_page - 1) * $rss_per_page; //RSSオフセット $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); } ?>

    • ベストアンサー
    • PHP
  • 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
  • Wordpressでのphp(投稿ナビを非表示に)

    WordpressでWebサイトを制作中です。 トップページに最新の投稿が表示できるようにしたのですが、その下に自動的に挿入されるページナンバー(次のページへの遷移)が動作しません。 (画像の、1,2,3、、、、13 のナンバーの部分です) 恐らく、Wordpressの「投稿」ページではなく、固定ページであるトップページにこの機能を組み込んだためかと思うのですが、特にページナンバーを表示させる必要がないため、ページナンバーだけを削除あるいは非表示にしたいのですが、phpの該当部分を削除すればいいのでしょうか? phpの知識がないために、お教えください。 Wordpressのファイル「page-home.php」の中に記述されてある中で、恐らく該当部分は以下かと思うのですが、この中で、どの部分を削除すればいいのでしょうか? 部分的に何度か削除してアップロードして試してみたのですが、不思議なことに、どの部分を削除しても、ページナンバーは消えません。 --------------------------------------------------- <!--LATEST POSTS--> <?php if(of_get_option('latstpst_checkbox') == "1"){ ?> <?php $args = array( 'post_type' => 'post', 'paged' => ( get_query_var('paged') ? get_query_var('paged') : 1)); query_posts($args); ?> <?php get_template_part(''.$zn_lays = of_get_option('layout_images', 'layout1').''); ?> <?php } else { ?> <?php } ?> <!--LATEST POSTS END--> -------------------------------------------------------- ちなみに、Wordpressは最新のバージョン 4.9.5–ja、 テンプレートの「Ttheron_lite」を利用しています。 情報として不足部分がありましたら、申し訳ありません。 ご指摘くださいましたら、情報を追加いたします。 なお、ブラウザに表示後にHTMLソースから、ナンバー部分に相当しそうな 部分のクラスに対して、 display: none; をstyle.cssに記述することも試してみたのですが、 やはり表示は消えません。 参考:http://evm-label.com/2015/05/wp_postnavi_hide01/ HTMLソースでは、この部分のようです。 <div class="thn_paginate"><span class='amp_title'>Pages:</span><a href='...../wp/' class='amp_page amp_current'>1</a><a href='...../wp/page/2/' class='amp_page'>2</a><a href='...../wp/page/3/' class='amp_page'>3</a><a href='...../wp/page/4/' class='amp_page'>4</a><a href='...../wp/page/5/' class='amp_page'>5</a><a href='...../wp/page/6/' class='amp_page'>6</a><a href='...../wp/page/7/' class='amp_page'>7</a><span class='amp_gap'>...</span><a href='...../wp/page/13/' class='amp_page'>13</a><a href='...../wp/page/2/' class='amp_next'>&raquo;</a></div> <div class="hidden_nav"></div> リンクのURL部分は、サイト公開前のために、伏せています(問題ありますでしょうか?) よろしくお願いいたします。

    • 締切済み
    • PHP
  • エスケープ処理

    どうも初めまして。 switch文を用いてページを振り分けてますが、 この場合$_GETはhtmlspecialcharsでエスケープ処理するべきでしょうか?それともSQL構文が入力されることも考えられるのでmysql_real_escape_string()も使うべきなのでしょうか? ああ混乱してます><; どなたか、よろしくお願いします if(isset($_GET['page'])){ $page = $_GET['page']; }else{ $page = "home"; } switch ($page) { case 'home': require ("home.php"); break; ~同じようなのが複数~略 default: echo "ページが見つかりませんでした"; break; }

    • ベストアンサー
    • PHP

専門家に質問してみよう