🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

Q&A

解決済

3回答

5300閲覧

StaticPressで指定ディレクトリを除外して出力しようとするとエラーになる

Otazoman

総合スコア44

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

0グッド

0クリップ

投稿2019/10/12 10:01

編集2019/10/15 06:39

前提・実現したいこと

以下のURLの手順を参考にStaticPressを設定しました。
http://webfood.info/staticpress-s3/

プラグイン導入はうまくいったのですがファイル除外設定を指定して実行しようとしたところエラーとなってうまく動きません。
どのようにすれば不要ディレクトリを出力しないようにすることができるでしょうか。

[Simply Static]も試してみたのですが、こちらだとファイルが全く出力されませんでした。
そこでStaticPressを使用しました。
StaticPressについてはファイルの出力は行えたのですが、不要なファイルまで出力されるのでそれらをうまく除外できればと考えております。
StaticPressにこだわっているわけではありません。より簡単に解決できる手段があればそちらでとも考えておりますが、Shifterだと有料プランのため、今回はそこまでの費用が厳しい状態です。(個人サイトのため)できれば費用をかけずにWordPressの静的化をしたいと
考えております。かなり困っているのでご教示いただけると助かります。

発生している問題・エラーメッセージ

再構築を実行すると以下の画面のようなエラーとなります。

イメージ説明

nginxのログを確認すると以下のような出力がありました。

2019/10/15 13:51:45 [error] 1490#1490: *557 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to function replace_url_of_feed(), 1 passed in /var/www/hoge/wp-includes/class-wp-hook.php on line 288 and exactly 2 expected in /var/www/hoge/wp-content/plugins/staticpress/plugin.php:72 Stack trace: #0 /var/www/hoge/wp-includes/class-wp-hook.php(288): replace_url_of_feed('/var/www/hoge...') #1 /var/www/hoge/wp-includes/class-wp-hook.php(310): WP_Hook->apply_filters('', Array) #2 /var/www/hoge/wp-includes/plugin.php(465): WP_Hook->do_action(Array) #3 /var/www/hoge/wp-content/plugins/staticpress/includes/class-static_press.php(415): do_action('StaticPress::fi...', '/var/www/hoge...', 'https://cms.hog...') #4 /var/www/hoge/wp-content/plugins/staticpress/includes/class-static_press.php(179): static_press->create_static_file('/chikaramochi.h...', 'single', true, true) #5 /var/www/hoge/wp-includes/class-wp-hook.php(286): static_press->ajax_fetch('') #6 /var/www/hoge/wp-include" while reading response header from upstream, client: XXX.XX.XXX.XX, server: XX.XXX.XXX.XX, request: "POST /wp-admin/admin-ajax.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.3-fpm.sock:", host: "cms.hoge.com", referrer: "https://cms.hoge.com/wp-admin/admin.php?page=static-press"

該当のソースコード

サイト通りにファイルに追記し[plugin.php]に以下の記述を追加しましたが
その際のみエラーが発生しています。
以下の追記箇所を外すと正常に「再構築」できました。

php

1 add_action('StaticPress::file_put', 'static_rm', 1); 2 function static_rm($file_dest, $url){ 3 if(strstr($file_dest, '/author/') 4 or strstr($file_dest, '/wp-content/plugins/') 5 or strstr($file_dest, '/wp-json/') 6 or strstr($file_dest, '/wp-includes/') 7 or strstr($file_dest, '/wp-admin/')){ 8 unlink($file_dest); 9 } 10 }

補足情報(FW/ツールのバージョンなど)

WordPress 5.2.3
PHP 7.3.0
StaticPress 0.4.5

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

add_action('StaticPress::file_put', 'static_rm', 1);
function static_rm($file_dest, $url){

の部分ですが何かを参考にしましたか?

フックで呼び出す関数にパラメーターが必要な場合、add_action の第4パラメーターに呼び出すフック関数に与えるパラメーターの個数を設定します。(デフォルトは1ですので、パラメータが2個以上の場合は指定が必要です。)
今回の例では、 add_action('StaticPress::file_put', 'static_rm', 1, 2); のようになります。

関数リファレンス/add_action 参照

この部分を修正するとエラーに変化はあるでしょうか?

投稿2019/11/03 05:40

CHERRY

総合スコア25216

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Otazoman

2019/11/03 06:07

ご回答ありがとうございます。こちらを参考にしていました。 http://webfood.info/staticpress-s3/ 以下の通り修正しました。エラー表示はなくなりましたが、「フェッチ開始」からずっと実行中の状態で 止まってしまっているようです。少し状況変わりました。 ''' add_action('StaticPress::file_put', 'static_rm', 1,2); function static_rm($file_dest, $url){ if(strstr($file_dest, '/author/') or strstr($file_dest, '/wp-content/plugins/') or strstr($file_dest, '/wp-json/')){ unlink($file_dest); } } '''
Otazoman

2019/11/03 07:54

結局は静的ファイルが出ませんでしたが、そちらは別の問題なので今後じっくり調べたいと思います。 ひとまずは本件は解決したのでベストアンサーとさせていただきます。ご回答くださった皆様ありがとうございました。
guest

0

不要なファイルを除外してください、という項目をもう一度読み返してみてはいかがでしょうか

  • wp-admin、wp-includes配下がいらない場合 →

869行目あたりにある部分の3、4行目をコメントアウトします。

ここでコメントアウトされるので、走査対象から外れます。

  • wp-content/plugins配下と/wp-json/index.htmlがいらない場合

「著者ページ(author)を出力したくない場合」でplugin.phpに追加した部分の3行目を下の3〜5行目のように修正します。

ここで修正する部分は、上の項目以外で除外したい場合ではないかと思います。質問者のプログラムを見ると、wp-admin、wp-includesにおいて二重に削除処理している、あるいは上記のコメントアウト処理をしていない可能性が高いです。

また、エラー内容は
**Too few arguments to function replace_url_of_feed(), 1 passed in /var/www/hoge/wp-includes/class-wp-hook.php on line 288 and exactly 2 **
となっており、関数replace_url_of_feedの引数が2つ欲しいのに1つしかないって意味なので、この部分に干渉している可能性も考えられます。

投稿2019/10/25 01:08

FKM

総合スコア3647

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Otazoman

2019/11/03 04:23

ご回答ありがとうございます。時間が空いてしまいましてすいません。 再度環境を準備してStaticPressを入れなおした上で先述のページも確認した上で 以下のサイトもなぞりながら検証してみました。 https://blogenist.jp/2018/05/16/4352/ 状況は変わらずです。詳細が取得できるかと思いWordPressのdebug.logも取得するようにしてみましたが結果は変わりませんでした。 [03-Nov-2019 04:08:36 UTC] PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to function static_rm(), 1 passed in /var/www/tohonokai/wp-includes/class-wp-hook.php on line 288 and exactly 2 expected in /var/www/tohonokai/wp-content/plugins/staticpress/plugin.php:62 Stack trace: #0 /var/www/sample/wp-includes/class-wp-hook.php(288): static_rm('/var/www/sample...') #1 /var/www/sample/wp-includes/class-wp-hook.php(310): WP_Hook->apply_filters('', Array) #2 /var/www/sample/wp-includes/plugin.php(465): WP_Hook->do_action(Array) #3 /var/www/sample/wp-content/plugins/staticpress/includes/class-static_press.php(415): do_action('StaticPress::fi...', '/var/www/sample...', 'https://192.168...') @@@ 同じくadd_action以降を削除するとファイル出力自体はできます。しかしadd_actionを追加するとエラーになってしまします。 wp-adminとwp-includesは[869行目あたりにある部分の3、4行目をコメントアウトします。]にて対応できていたようです。 ただし、htmlは出力できていないようで、正常に動いていないようです。 昨年WordPress4系で試したときはおかしくなかったのですが5系で作業しているのが影響している かもしれないと推測しております。ほかに妙案があればご助力いただけると幸いです。
guest

0

バージョンを4.9に戻すことでエラーも出力されなくなり
ファイルも正常に出力できました。

ただそのままの出力だとうまく行かないのでこれから微修正してみます。
色々とありがとうございました。

WordPressとプラグインの対応の問題かと思います。

https://brionac-yu-yake.net/wordpress-downgrade/

投稿2019/11/24 07:45

編集2019/11/24 07:51
Otazoman

総合スコア44

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問