WordPressの質問(q10013003):$offsetのコントロール方法は?

このQ&Aのポイント
  • WordPressの質問(q10013003)の続【投稿ページ その3】で、break,continue構文以外で$offsetをコントロールする方法について教えてください。
  • 質問内容を要約すると、$offsetをコントロールするための良い方法を探しているとのことです。
  • 回答としては、データベースから取得したRSSを分けて保存し、そのまま出力する方法をおすすめします。この方法ならループをせずに$offsetをコントロールできます。また、画像1,画像2,画像3のURLについても同じサイトから取得する予定であれば、storage_rss.phpと処理を分ける必要はありません。SQLから操作するかどうかは詳細がわかりませんが、必要に応じて使い分ければ良いでしょう。
回答を見る
  • ベストアンサー

WordPressの質問(q10013003)の続

【投稿ページ その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から操作するのでしょうか?

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

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

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

ところで、確認したいことがあります。 front-page.phpとpage-secound.phpとpage-third.phpの違いは、画像数が1か2か3でその一覧表示スタイルと、RSSの取得元だけで、ランキング表示その他は、それぞれの画像数の記事になるだけで、デザインは同じですよね。 それと、3パターンあると言われていた、アーカイブとカテゴリーと検索は、その一覧表示のデザインがfront-page.phpとpage-secound.phpとpage-third.phpのように異なるだけで他は同じですよね。

php_learn
質問者

お礼

ファイル自体を識別させて表示方法の切り替えを行うのか、それぞれの機能の箇所で分岐を行うのかどちらかになると思われます。

php_learn
質問者

補足

おっしゃる通りです。それぞれfront-page.php,page-secound.php,page-third.phpと同じデザイン記事表示になります。 画像数が異なるため、間接的にカスタムフィールドで表示ファイルの切り替えを行うように考えています。

その他の回答 (84)

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

【アーカイブ その16】 サイトを確認しました。 クリックすれば閉じるようですね。 2022年も2021年も初期表示でacv_openのクラスが設定されています。 試しに、全部閉じた状態になるかやってみていただきたいので、 ここを、 ---- if ($y == $this_year) { // 今年だったら $out .= '<li class="year acv_open current">'.$y; ---- こうしてみてください。 ---- if ($y == $this_year) { // 今年だったら $out .= '<li class="year">'.$y; ----

php_learn
質問者

補足

2021は閉じていて2022は開いています。 1のcssは機能して2のcssが機能しないということは、> ulが認識されていないということだと思います。 phpの構文を見返してみたところ、<li>内に<ul>タグがhtml表示されておりました。<ul><li></ul></li>の攻勢になっていないことが原因ではないでしょうか? <ul class="archive-list"><li class="year">2022<ul class="month-archive-list"><li><a href="http://www.gsdfgsdgs.cfbx.jp/2022/6">2022年6月</a>(4)</li><li><a href="http://www.gsdfgsdgs.cfbx.jp/2022/5">2022年5月</a>(6)</li></ul><li class="year current acv_open">2021<ul class="month-archive-list"><li><a href="http://www.gsdfgsdgs.cfbx.jp/2021/7">2021年7月</a>(2)</li></ul></li></ul></div> 1,.archive-list > li:not(.acv_open)::before { /* リストが閉じられているとき */ font-family: 'fontello'; content: '\e814'; /* +マーク */ margin-right: .5em; } 2,/* acv_openクラスをもたないリスト項目の子リスト(month-archive-list)は、デフォルト非表示に */ ul.archive-list > li:not(.acv_open) > ul.month-archive-list { display: none; } _____________________________________________________________ $this_year = (string) idate('Y'); // 現在の年を、4桁の文字列で取得 $out = '<ul class="archive-list">'; foreach ($ym_array as $y => $y_items) { if ($y == $this_year) { // 今年だったら $out .= '<li class="year">'.$y; } else { // それ以外の年の場合 $out .= '<li class="year current acv_open">'.$y; } $out .= '<ul class="month-archive-list">'; foreach ($y_items as $m => $c) { $url = home_url("{$y}/{$m}"); $out .= "<li><a href=\"{$url}\">{$y}年{$m}月</a>({$c})</li>"; } $out .= '</ul>'; // 閉じる <ul class="month-archive-list"> } $out .= '</li>'; // 閉じる <li class="year"> $out .= '</ul>'; // 閉じる <ul class="archive-list">

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

【アーカイブ その15】 ・get_stylesheet_directory_uriが何故使用できないのか考えられる要因などありますでしょうか? 私の方でも、質問者さまと同じファイル構成(下記)になるようにしてみました。 front-page.phpからスタイルシートとjQueryの読み込みと年月別アーカイブ表示用のスクリプトを削除。 functions.phpにcustom_print_scripts()を追加。 テーマ内にcssフォルダを作成して、その中にstyle.cssを作成して、スタイルシート(以前のもの)を記述。 テーマ内にjsフォルダを作成して、その中にarchive.jsを作成して、年月別アーカイブ表示用のスクリプトを記述。 それで、get_stylesheet_directory_uri()とget_template_directory_uri()の両方で試してみたところ、どちらでもarchive.jsは読み込まれて、問題なく動作しました。 質問者さまの方でget_stylesheet_directory_uri()が使用できない要因はわかりませんが、get_template_directory_uri()で動作しているのならそれでいいと思います。 get_stylesheet_directory_uri()は子テーマのスタイルシートディレクトリを取得するものらしいです。 子テーマと言うのも、それぞれの違いも、なんなのかわかりませんが、気になるのでしたら、以下のコードをfront-page.phpの先頭にでも追加して、確認してみてください。 ---- echo "<p>".get_template_directory_uri()."</p>"; echo "<p>".get_stylesheet_directory_uri()."</p>"; ---- 私はどちらも同じ自テーマのディレクトリが表示されました。 質問者さまの方では違うものが表示されるのかも知れません。 ・下記のhideとはどのclassを指しているのでしょうか? 確かに、hideと言うクラスはどこにもなさそうです。 スタイルシートが参考サイトよりかなり増えていますが、他のものとまぜられてますか。 ところでアーカイブの年をクリックすると閉じますか閉じませんか。 前回も言いましたが、2022年しかないので開いている状態が正常です。 phpMyAdminで直接操作して、投稿データの数件の日付を2021年に更新して、年がわかれるようにしてみてください。

php_learn
質問者

お礼

下記の2つのコードは機能してアイコンマークも読みこんでいるのですが、非表示にするコードだけ機能しません。 考えられる原因はありますでしょうか? ※機能しないコード /* acv_openクラスをもたないリスト項目の子リスト(month-archive-list)は、デフォルト非表示に */ ul.archive-list > li:not(.acv_open) > ul { display: none; } ___________________________________________________________ /* 年別アーカイブリストのアイコン設定 */ .archive-list > li.acv_open::before { /* リストが開かれているとき */ font-family: 'fontello'; content: '\e815'; /* -マーク */ margin-right: .5em; } .archive-list > li:not(.acv_open)::before { /* リストが閉じられているとき */ font-family: 'fontello'; content: '\e814'; /* +マーク */ margin-right: .5em;

php_learn
質問者

補足

質問者さまの方でget_stylesheet_directory_uri()が使用できない要因はわかりませんが、get_template_directory_uri()で動作しているのならそれでいいと思います。 get_stylesheet_directory_uri()は子テーマのスタイルシートディレクトリを取得するものらしいです。 子テーマと言うのも、それぞれの違いも、なんなのかわかりませんが、気になるのでしたら、以下のコードをfront-page.phpの先頭にでも追加して、確認してみてください。 ---- echo "<p>".get_template_directory_uri()."</p>"; echo "<p>".get_stylesheet_directory_uri()."</p>"; ---- A.確認してみたところ同じファイルが表示されておりました。 http://www.gsdfgsdgs.cfbx.jp/wp-content/themes/sample_theme http://www.gsdfgsdgs.cfbx.jp/wp-content/themes/sample_theme ・下記のhideとはどのclassを指しているのでしょうか? 確かに、hideと言うクラスはどこにもなさそうです。 スタイルシートが参考サイトよりかなり増えていますが、他のものとまぜられてますか。 A.途中から混ざっていたのかもしれません。不要なコードは削除いたします。 ところでアーカイブの年をクリックすると閉じますか閉じませんか。 前回も言いましたが、2022年しかないので開いている状態が正常です。 phpMyAdminで直接操作して、投稿データの数件の日付を2021年に更新して、年がわかれるようにしてみてください。 A.記事の投稿日を2021にしてみたのですがアコーディオンは閉じませんでした。 おそらくCSSのクラス設定に問題が有りそうです… http://www.gsdfgsdgs.cfbx.jp/ <div class="widget"> <h4 class="monthly-archive-title">月別アーカイブ</h4> <ul class="archive-list"><li class="year current acv_open">2022<ul class="month-archive-list"><li><a href="http://www.gsdfgsdgs.cfbx.jp/2022/6">2022年6月</a>(4)</li><li><a href="http://www.gsdfgsdgs.cfbx.jp/2022/5">2022年5月</a>(6)</li></ul> <li class="year current acv_open">2021<ul class="month-archive-list"><li><a href="http://www.gsdfgsdgs.cfbx.jp/2021/7">2021年7月</a>(2)</li></ul></li></ul></div>

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

【アーカイブ その14】 ・下記のコードは外部から引っ張っているのでしょうか? はい。外部のものです。 このような方法をCDNと呼びます。 https://pengi-n.co.jp/blog/jquery-cdn/ wandboxは難しかったのでGitHubでアップします。 https://github.com/dell-GH/sample_theme

php_learn
質問者

お礼

cssは下記コードになります。 ul.archive-list ul{ /* アコーディオン部 */ margin: 5px 0 30px 15px; } ul.archive-list ul.hide{ /* アコーディオン非表示 */ display: none; } ul.archive-list li{ /* リセット */ list-style: none; background: none; padding: 0; } ul.archive-list li p{ /* リセット */ margin: 0; } ul.archive-list li p span{ /* アイコン背景 */ display: inline-block; width: 15px; height: 15px; position: relative; background: #09c; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; margin-right: 5px; vertical-align: -2px; } ul.archive-list li p span:before{ /* アイコン横棒 */ content:''; height: 1px; width: 9px; display: block; background: #fff; position: absolute; top: 7px; left: 3px; } ul.archive-list li p span:after{ /* アイコン縦棒(閉じてるとき) */ content: ''; height: 9px; width: 1px; display: block; background: #fff; position: absolute; top: 3px; left: 7px; } ul.archive-list li p span.acv_open:after{ /* アイコン縦棒なし(開いてるとき) */ height: 0; width: 0; } ul.archive-list ul li{ /* アーカイブリスト */ margin-left: 15px; position: relative; } ul.archive-list ul li::after{ /* アーカイブリストマーク */ display: block; content: ''; position: absolute; top: .2em; left: -1em; width: 6px; height: 6px; border-right: 1px solid #666; border-bottom: 1px solid #666; -webkit-transform: rotate(-45deg); transform: rotate(-45deg); } /* acv_openクラスをもたないリスト項目の子リスト(month-archive-list)は、デフォルト非表示に */ ul.archive-list > li:not(.acv_open) > ul { display: none; } /* 年別アーカイブリストのアイコン設定 */ .archive-list > li.acv_open::before { /* リストが開かれているとき */ font-family: 'fontello'; content: '\e815'; /* -マーク */ margin-right: .5em; } .archive-list > li:not(.acv_open)::before { /* リストが閉じられているとき */ font-family: 'fontello'; content: '\e814'; /* +マーク */ margin-right: .5em; } /* 月別アーカイブリストのアイコン設定 */ .month-archive-list > li::before { font-family: 'fontello'; content: '\e802'; /* > マーク */ margin-right: .5em; margin-left: 3px; color: rgba(0,0,0,.54); }

php_learn
質問者

補足

ファイルコードありがとうございます。 頂いたコードでもcss以外は上手く動作したのですが、functions.phpで読み込みが失敗した原因を1つ1つ探しておりました。 原因が2つ分かりまして、1つ目は元々wordpressが読み込んでいたjQueryが原因でした。無効にして新たに読み込んでいます。 2つ目はget_stylesheet_directory_uriが機能していないからでした。get_template_directory_uri()に変更しております。 ※該当コード function custom_print_scripts() { if (!is_admin()) { //デフォルトjquery削除 wp_deregister_script('jquery'); //GoogleCDNから読み込む wp_enqueue_script('jquery-js', '//ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js' ); wp_enqueue_script('archive-js', get_template_directory_uri() . '/js/archive.js'); } } add_action('wp_print_scripts', 'custom_print_scripts'); お聞きしたいことが2点あるのですが、 1点目は、get_stylesheet_directory_uriが何故使用できないのか考えられる要因などありますでしょうか? 2点目はcssについてになります。下記のhideとはどのclassを指しているのでしょうか? ul.archive-list ul.hide{ /* アコーディオン非表示 */ display: none; } cssでli:not()以外は上記の1つを除きすべてstyle変更できているのですが、どうしてもここだけ効きません。 cssを直読みしても駄目なのでclassのつけ方に問題が有りそうです。 アドバイスお願い致します。 ※該当ファイル https://wandbox.org/permlink/nm0v1NRZvX96lhcw ※表示画面 http://www.gsdfgsdgs.cfbx.jp/

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

【アーカイブ その13】 新しい順に表示するのでしたら、SQL文を修正しておいてください。 ---- ORDER BY y DESC, m DESC ----

php_learn
質問者

補足

ありがとうございます。使わせていただきます。

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

【アーカイブ その12】 なるほど、jQueryの読み込みですか。 </head>以前では読み込まれていませんでした。 質問者さまの方では読み込まれているものと思っていて、 どのような仕組みで読み込まれるのかわかっていないため、 私は直接以下のように書いていました。 ---- <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script> ---- この下に年月別アーカイブ表示用のスクリプトがあります。 あと、スタイルシートをstyle.cssに書くと初期は全部開いた状態になってうまくいっていません。 なので、front-page.phpの最初に入れています。

php_learn
質問者

補足

回答ありがとうございます。phpファイルでcssを実行する方法がよくわからないのと、jQueryコードが違うため教えていただきたいのですが、下記のコードは外部から引っ張っているのでしょうか? 参考サイトのコードを直接書いていないので、疑問に思いました。 可能であれば現在のfront-page.php(アーカイブ部分)のコードをwandboxに挙げていただけると助かります。 <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script> ※参考サイト jQuery( document ).ready( function( $ ) { // @link: http://kachibito.net/snippets/basic-panel //年月別アーカイブ表示用 $(".archive-list li").click(function() { //@link: https://stackoverflow.com/questions/6656202/jquery-slidedown-child-ul if($(this).next(".month-archive-list").is(":visible") || $(this).hasClass("acv_open")){ //既に開いている場所なら $(".month-archive-list", this).slideUp("fast"); //閉じる $(this).removeClass("acv_open"); //.acv_open削除 } else { //閉じている場所なら $(this).siblings().children(".month-archive-list").slideUp("fast"); //その他のリストを閉じる $(".month-archive-list", this).slideDown("fast"); //開く $(".year").removeClass("acv_open"); //.acv_open削除 $(this).addClass("acv_open"); //.acv_open付加 } }); });

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

【アーカイブ その11】 今年だったら開いた状態で正しいのではないでしょうか。 ---- if ($y === $this_year) { // 今年だったら $out .= '<li class="year acv_open current">'.$y; ---- と思って、去年の日付のデータを作って試してみました。 私の方では今年も開いていませんでした。 =は3個ではなく2個の方がいいです。 ---- if ($y == $this_year) { // 今年だったら $out .= '<li class="year acv_open current">'.$y; ---- それはそれとして、スタイルシートがうまく動いていない場合は、他のスタイルに阻害されているかも知れませんので、いったん他のすべてのスタイルをなくして、この部分だけのものにして試してみてください。

php_learn
質問者

お礼

php_learn
質問者

補足

回答ありがとうございます。すべてのcssを消したところ画像のように表示されております。 jQuery自体の読み込みに失敗しているかもしれないと思ったのですが、dell_OKさんの方ではページソースの</head>前に<script>は読み込まれているでしょうか? こちらでは読み込まれていないため疑問です。 view-source:http://www.gsdfgsdgs.cfbx.jp/ ※表示画像 https://imgur.com/odvoGDL.jpg

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

【アーカイブ その9】 参考サイトのコードによくわからない文字 &gt; がありました。 ----参考サイト $(".archive-list &gt; li").click(function() { ---- これをなくすとそれっぽく動作するようになりました。 ----変更 $(".archive-list li").click(function() { ----

php_learn
質問者

補足

アドバイスありがとうございます。 現在は1.のように表示されているのですが、2のように月は非表示にしたいです。 参考サイトの下記classが効いていないようですが、通常は見えないようにcssで指定することは可能でしょうか? /* acv_openクラスをもたないリスト項目の子リスト(month-archive-list)は、デフォルト非表示に */ .archive-list > li:not(.acv_open) > ul { display: none; } 1.https://imgur.com/OAjbyUh.jpg 2.https://imgur.com/PoFvONi.jpg

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

【アーカイブ その8】 ・archive.phpのSQLについて質問があるのですが、下記の記述の意味が分かりませんでした。 これは何をされているのでしょうか? MySQLで日付型を文字列として処理する場合には、書式による規則があります。 どのような書式かは設定によってことなるかも知れませんので、これならうまくいく、とは言い切れませんが、私の環境ではうまくいけたので、それを基本に説明します。 SQL文でこうかかれていましたね。 post.post_date LIKE %s %sには文字列が入りますので、実際に実行されるSQL文ではこんな感じになります。 post.post_date LIKE '文字列' それで、例えば2022年7月の日付を取得したい場合はこうなります。 post.post_date LIKE '2022-07%' この7月の部分ですが、次のように前にゼロがない場合はヒットしません。 post.post_date LIKE '2022-7%' なぜかと言うと、MySQLが日付型であるpost.post_dateを文字列と比較する際に、設定されている書式によって文字列に変換します。(たぶん) 書式はおそらく初期値が'%Y-%m-%d'で、桁で書くとこう'YYYY-MM-DD'なり年4桁、月2桁、日2桁となります。 それで、例えば2022年7月15日であれば、'2022-07-15'に変換されます。 この'2022-07-15'と'2022-7%'を比較すると、6文字目が不一致なのでヒットしません。 これをヒットさせるために前にゼロを補って月を2桁にしているのがこの処理です。 $mm = str_pad($m, 2, '0', STR_PAD_LEFT); あとは、年と-でくっつけて、LIKEのための%を付加しています。 $date_query = "{$y}-{$mm}%"; 私は今回のような場合は日付関数を使って年と月を取り出して数値条件にするか、その月の一日から末日(あるいは翌月の一日未満)の範囲条件で書きます。 日付型をLIKEにする案は知らなかったので勉強になりました。

php_learn
質問者

補足

【アーカイブ その8】 post.post_date LIKE '2022-07%' この7月の部分ですが、次のように前にゼロがない場合はヒットしません。 post.post_date LIKE '2022-7%' なぜかと言うと、MySQLが日付型であるpost.post_dateを文字列と比較する際に、設定されている書式によって文字列に変換します。(たぶん) 書式はおそらく初期値が'%Y-%m-%d'で、桁で書くとこう'YYYY-MM-DD'なり年4桁、月2桁、日2桁となります。 それで、例えば2022年7月15日であれば、'2022-07-15'に変換されます。 この'2022-07-15'と'2022-7%'を比較すると、6文字目が不一致なのでヒットしません。 これをヒットさせるために前にゼロを補って月を2桁にしているのがこの処理です。 $mm = str_pad($m, 2, '0', STR_PAD_LEFT); あとは、年と-でくっつけて、LIKEのための%を付加しています。 $date_query = "{$y}-{$mm}%"; A.詳しい説明ありがとうございます。勉強になりました。 アーカイブについて調べているのですが、cssの部分で苦戦しています。参考サイトのようにデフォルトでは月を非表示にしたいのですがどうしても上手くいきません。 アドバイスお願い致します。 ※表示画面 https://imgur.com/qJVpcKP.jpg ※参考サイト https://cosybench.com/customize-wp-archives-look/ ※出力されているhtml <div class="month-archive"> <div class="side-title">月別アーカイブ</div> <h4 class="monthly-archive-title"></h4> <ul class="archive-list"><li class="year">2022 <ul class="month-archive-list"> <li><a href="http://www.gsdfgsdgs.cfbx.jp/2022/5">2022年5月</a>(6)</li> <li><a href="http://www.gsdfgsdgs.cfbx.jp/2022/6">2022年6月</a>(4)</li></ul></li></ul> </div> ___________________________________________________________________________________________________________________ ※該当コード <!--アーカイブ--> <div class="month-archive"> <div class="side-title">月別アーカイブ</div> <h4 class="monthly-archive-title"></h4> <?php /* 年月別アーカイブリストを取得する */ $sql = " SELECT YEAR (post.post_date) AS y, MONTH (post.post_date) AS m, count(*) AS c 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' GROUP BY y, m "; $query = $wpdb->prepare($sql); $ym_items = $wpdb->get_results($query); /* 年月別配列を作成 */ $ym_array = []; foreach ($ym_items as $item) { $ym_array[$item->y][$item->m] = $item->c; } $this_year = (string) idate('Y'); // 現在の年を、4桁の文字列で取得 $out = '<ul class="archive-list">'; foreach ($ym_array as $y => $y_items) { if ($y === $this_year) { // 今年だったら $out .= '<li class="year acv_open current">'.$y; } else { // それ以外の年の場合 $out .= '<li class="year current acv_open">'.$y; } $out .= '<ul class="month-archive-list">'; foreach ($y_items as $m => $c) { $url = home_url("{$y}/{$m}"); $out .= "<li><a href=\"{$url}\">{$y}年{$m}月</a>({$c})</li>"; } $out .= '</ul>'; // 閉じる <ul class="month-archive-list"> } $out .= '</li>'; // 閉じる <li class="year"> $out .= '</ul>'; // 閉じる <ul class="archive-list"> // HTMLの出力 echo $out; ?> </div>

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

JavaScriptの件で質問されている方とこちらの質問に同じ質問をしないでくださいね。 そういうことはインターネット上でよくないこととされています。 例え違うサイトだったとしてもです。 質問の本題が別々なのでどちらの回答者も別物と思っていてお互いを確認していなくて気づいていなかったのだと思いますが、気づくと厳しく言われることがあります。 かぶる内容になった場合はまずどちらか一方にだけ質問してその回答を待ち、解決しなかった場合にもう一方に質問するようにしてください。 原因がわからなくてどちらに質問したらいいかわからなかったのかも知れませんが、原因を判明させるためにも、まずどちらか一方にです。

php_learn
質問者

補足

了解いたしました。ご迷惑をおかけしてしまい申し訳ありませんでした。

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

【アーカイブ その7】 記事やRSSを表示する処理や、ページリンクに必要な変数設定がありません。 JavaScriptは関係なさそうです。 ----archive.php //投稿読み込み $posts_per_group = 1; // 投稿グループあたり投稿件数 $posts_per_page = $block_per_page * $group_per_block * $posts_per_group; // ページあたり投稿件数 $posts_offset = ($current_page - 1) * $posts_per_page; //投稿オフセット $args = [ 'posts_per_page' => $posts_per_page, 'offset' => $posts_offset, 'meta_key' => 'single_rss_feed1', 'year' => $y, 'monthnum' => $m, ]; $post_items = get_posts($args); //表示 for ($i = 0; $i < $block_per_page; ++$i) { (省略) } //ページリンク $display_pages = 5; //番号を表示したいページ数 $display_page_count = 0; /* ここから追加 */ /* 検索全件件数取得 */ $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); ----

php_learn
質問者

補足

修正ありがとうございます。変数設定が抜けておりました。少し冷静になってコードの修正を行うよう気を付けます。

関連するQ&A

  • WordPressの固定ページの要素が反映されない

    WordPressの固定ページのタイトル、サイドバー、アイキャッチ画像などが表示されません。 「FeedWordPress」というプラグインを使ってRSSフィードを読み込んで他人様の投稿を表示させるページを作っています。いわゆるアンテナサイトです。 まず、固定ページを作りました。そしてその固定ページに自動で集めた他人様の投稿を表示させるようにしました。しかし何かが干渉しているのか、固定ページのタイトルが出てきません。イメージとしましては、 ------------------------------ ○○アンテナ ←←←固定ページのタイトルなどが出てきません ・RSSフィード読み込み記事1 ・RSSフィード読み込み記事2 ・RSSフィード読み込み記事3 ・RSSフィード読み込み記事4 ------------------------------ また、同時に固定ページの編集のところでサイドバーを指定したりアイキャッチ画像を入れたりしているのですが、どちら出ません。 変な表現ですが、固定ページの要素全てががFeedWordPressに負けてしまっている状態のようです。ちなみにRSSフィードで集めた投稿は画像やタイトルや本文ともにきれいに表示されています。Googleなどで三日三晩調べても解決に至りませんでした。また管理者ページの[外観]→[カスタマイズ]もとことん隅から隅まで確認しましたが解決できませんでした。 稚拙な表現ですが、どなたかご教授お願い致します。

  • WordPressについての質問です

    wordpressを始めました。 投稿記事のタイトルの下にある日付と投稿者にそれぞれブログ記事へのリンクが貼られますが、 このリンクを解除することは可能でしょうか?

  • 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
  • wordpressのリンクについて質問があります。

    wordpress初心者です。 wordpressで相互リンクを管理するHPの管理画面を作成したいのですが よくわかりません・・・ いろいろ調べてみたのですが、 wordpressにログイン後管理ページのダッシュボードにて 「リンクからリンク集の作成ができる」と調べていたらわかったのですが、 そもそもログイン後からダッシュボードを見ても「リンク」がありません。 上からダッシュボード、投稿、メディア、固定ページ、コメント、外観、 プラグイン、ユーザー、ツール、設定と順番に並んでいます。 初期設定を2,3回しましたが解決できませんでした・・・ リンク集を作成したいのでダッシュボードの「リンク」を表示する方法を 知っていいる方は教えて頂けませんか? よろしくお願いします。

    • 締切済み
    • PHP
  • FC2 ブログ 記事をカスタマイズしたいです

    FC2ブログ始めました。 テンプレは3カラムを使用してます。 真ん中にコメント記事がでますが、その記事上部にフリーエリアを作り、そこに広告バナーを固定してます。 ページが変わっても、フリーエリアはそのまま一番上です。 で、その広告を囲んだり、詳細を記載したいのですが、ググってもわかりませんでした。 言葉では、分かりづらいと思いますので、画像を添付しました。 画像のように、幾つもの広告バナーを一つ一つ枠で囲み、詳細を下に記載したいと思います。 どこかに無料テンプレートを配布してるサイトとか、説明してるサイトがありましたら教えてください。

  • WordPress3での投稿記事一覧

    WordPress3の勉強を始めました。 インストールして、最初のページで、 「Hello world!」となり、 投稿記事 の一覧になります。 トップページで、 投稿記事 の一覧 を削除する方法がわかりません。 WordPress3の管理画面を見ても、該当する部分がわかりません。 ちなみに、 トップページは、サイドバーのウィジェットを使うだけで、 インストールした時に、投稿記事になっていた部分は、 画像などにしたいと思っております。 投稿記事は、トップページからリンクを張り、 2ページめにしようと思っております。 よろしくお願いします。

  • wordpressの予約投稿の日付とRSSの日付

    wordpress4.3.1を使用しています。 予約投稿をしたのですが、wordressの投稿のRSSでは日付が予約投稿をした日付ではなく、記事を入力した日付で取得されてしまいました。外部サイトへRSSのfeedを読み込んで記事タイトルと日付を表示させる都合上、日付は予約投稿した日でも表示させたいと思います。 (現状は添付画像ご確認よろしくお願いいたします。) どうすればよろしいでしょうか。よろしくお願いいたします。

    • 締切済み
    • CSS
  • 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に関する質問です。 サイトにプロフィールを掲載しようと思い、 プロフィールを固定ページとして投稿しました。 固定ページを投稿する際にパーマリンクが http://・・・・・/プロフィール となっていましたが 公開した固定ページのURLを見てみると http://・・・・・/2%5#36% というような数字の羅列したURLになっていました。 URL設定自体は数字ベースに設定しているので 数字ベースのURLになったと思うのですが、 パーマリンクとURLというのは違うものなのでしょうか。 wordpressを使い始めてまだ間もないので この類の詳しいことまで教えていただけるとうれしいです。 よろしくお願いします。 ※OKWaveより補足:「富士通FMV」についての質問です。

  • ワードプレス(WordPress) RSS magpierss 日付

    ワードプレス(WordPress)のRSSを、他のサイトで取得するため にmagpierssを入れてるのですが、日付がうまく取得(表示) できません・・。教えてください・・。 ◆ワードプレス側のRSSは、固定カテゴリーです。 アドレス?feed=rss2&cat=3 ◆magpierss では、ブログタイトルは取得しないので 記事のタイトルと、日時だけ取得したいと想っています。 前略・・ $count = 1; // ↓ブログタイトル↓ // echo "<h2>$title</h2>\n"; //echo "<dl>\n"; // ↓記事6個まで↓ foreach ($rss->items as $item ) { if($count < 6){ $count++; // 記事のタイトル $title = $item['title']; // 表示する文字数を制限する 10文字 $title = mb_strimwidth($title, 0, 50, "...", "UTF-8"); //$title = mb_convert_encoding($title, "UTF-8", "auto");   記事の要約   $desc = $item['description'];  $desc = $item['summary'];   $desc = mb_convert_encoding($desc, "UTF-8", "auto"); // 記事のURL $url = $item['link']; // 記事の投稿日時 2005/09/20/10:30:00形式 $date = $item['dc']['date']; $time = rtrim("$date","\+09:00"); $time = strTr("$time","T-","//"); // 記事の投稿日時 09/20形式 $date2 = substr($item['dc']['date'],5,5); $time2 = strTr("$date2","T-","//"); // 記事の投稿日時 10:30形式 $time3 = date( 'H:i', strtotime( substr( $item['dc']['date'],11,8 ) ) ); // 出力形式選択 echo " <ul> <li> <a href=\"$url \">$title</a>$time</li> </ul>"; } } // 出力形式選択↑ループ ?>

    • ベストアンサー
    • PHP

専門家に質問してみよう