前提・実現したいこと
お世話になります。
Wordpressでニュースページを作成し、年ごとのアーカイブを設定しています。
設定自体は2年ほど前にしていて当時は問題なく動いていたのですが、気付いたら動かなくなっていました。
プラグインは使用していません。
今年5月にサーバのシステムが更新されたのかログインが出来なくなったことがあり、アカウントを登録し直してもらいました。
また、7月にドメインのhttpsへの移行がありました。
ただ、動かないと気付いたのが4日ほど前のため、関係があるかは分かりません。
知識が足りず設定のどこが間違っているか分からない状態のため、お力お貸しいただければと思います。
発生している問題・エラーメッセージ
アーカイブの年をクリックしても各年一覧に飛ばず最新からの一覧が表示されます。
例えば2017や2016をクリックしても、最新から10件までが表示されます。(10件表示設定のため)
次ページへのリンクは表示されますが、クリックしても最新から10件までで変わりません。
該当のソースコード
管理画面のパーマリンク
https://example.jp/news/%year%/%monthnum%/%day%/%post_id%.html
生成される各記事のURL
https://example.jp/news/2018/09/10/276.html
sidebar.phpに
<?php wp_get_archives('type=yearly'); ?>
でアーカイブを設定しhtml上は各リンクが以下のように表示されます。
<ul>
<li><a href='https://example.jp/news/2018'>2018</a></li>
<li><a href='https://example.jp/news/2017'>2017</a></li>
<li><a href='https://example.jp/news/2016'>2016</a></li>
</ul>
エラーログを確認したところ以下のエラーが出ていました。
PHP Warning: Missing argument 1 for query_posts(), called in /opt2/web/example.jp/htdocs/news/wp-content/themes/example/archive.php on line 24 and defined in /opt2/web/example.jp/htdocs/news/wp-includes/query.php on line 96
それぞれのファイルの該当箇所が以下になっていましたので、こちらのquery_posts();の書き方に問題があるのでしょうか。
archive.php
<?php query_posts(); ?>
query.php
function query_posts($query) {
$GLOBALS['wp_query'] = new WP_Query();
return $GLOBALS['wp_query']->query($query);
}
試したこと
http→httpsへのリンクを確認修正しました。
補足情報(FW/ツールのバージョンなど)
WordPress 4.9.8
ログインされているプラグイン
・Disable Emojis (GDPR friendly)
・Disable REST API
・Disable XML-RPC
・Google Captcha (reCAPTCHA) by BestWebSoft
・Login rebuilder
・Really Simple SSL
・WP Mail SMTP
※勝手に停止が出来ません
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
質問文に記載された内容から分かる範囲で...
PHP Warning: Missing argument 1 for query_posts()
は、query_posts() を呼び出す時の引数の数が、定義された内容と異なっているよというメッセージですね。
query_posts は、1つの引数が必要ですが、質問文に書かれたコードの
archive.php
<?php query_posts(); ?>
では、 引数を渡していないのが 原因ですね。
ただし、Warning は、致命的なエラーではないので、(希望とは異なりますが、デフォルトの条件で)検索するという動作はしていると思います。
どのような検索がされているかというと....
query_posts()
を引数なしで呼び出すと WordPress のデフォルトの検索条件
が設定されて検索されます。
管理画面の設定によりますが、WordPress インストール直後のデフォルトの条件は、 最新の投稿10件を新しい順に表示
になっていると思いますので、管理画面で件数などを変更してない場合は、この状態だと思います。
----
テーマファイルの PHP コードをどこかの段階で書き換えていなければ、おそらく製作された直後からこの状態だったのではないかと思われます。
なお、https://wpdocs.osdn.jp/テンプレートタグ/query_posts に
注 1: この関数はプラグインまたはテーマの中で使われることを想定されていません。後ほど出てくる説明にあるように、メインクエリーを変更するにはパフォーマンス面でも優れたより良いオプションが存在します。
注 2: query_posts() はページ内のメインクエリーを書き換え、新しいクエリーのインスタンスと置き換えるために使う関数としては過度に単純化され、問題が発生しやすい方法です。非効率的で(SQL クエリを再実行します)、一部の状況では適切に実行することもできません(特にページング処理)。モダンな WordPress コードではもっと安定したメソッドを使うべきです。例えばpre_get_posts フックを使った方法などです。ひとことで言うと、query_posts() は決して使うべきではありません。
と書かれているように query_posts をテンプレート内で使用することは、非推奨とされていますので、WP_Query か pre_get_posts あたりで、書き換えるのが良いと思います。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.21%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
CHERRY
2018/12/03 17:28
例示でつかうドメイン名は、「ご自身が所有する実際のドメイン名」か「例示用に用意されているドメイン名( example.com / example.net や example.jp 等)」を使ってください。( 例示用ドメイン名については、http://www.atmarkit.co.jp/fwin2k/win2ktips/801exampledom/exampledom.html 等を参照してください。)
CHERRY
2018/12/03 17:31
「Webサーバーのエラーログ」か WordPressの「デバッグモード」で出力される(orログファイルに保存する設定の場合はログファイルに記録された)メッセージに 何か表示されていたりしないでしょうか?
CHERRY
2018/12/03 17:34
テーマファイルやアーカイブのテンプレートファイルで、どのような処理をしているのでしょうか? 標準のアーカイブテンプレートのままでしょうか?
nichino
2018/12/03 17:52
すみません、WorPressのデバッグモードについて、今wp-config.phpの変更権限が無いので改めて確認します。
nichino
2018/12/03 17:54
テーマはarchive.phpも含め全ページ1から作成しました。
CHERRY
2018/12/04 11:32
エラーログとデバッグモードで表示される内容はほぼ同じなので、エラーログが確認できるのであれば、デバッグモードは見なくても大丈夫です。
nichino
2018/12/04 11:36
ありがとうございます。いただいたご回答を基に修正を試してみます。