wordpress

【WordPress】Photo Express for Googleのプラグインを残しておいたばかりに「Cannot redeclare str_starts_with()」エラー

WordPressでPhoto Express for Googleのプラグインを残しておいたためエラーでサイトが表示できなくなってました。

表側のみならず管理側のログイン画面もエラーで表示されず…

以下で解決できたのでメモ。

Photo Express for Googleのプラグインはすでにメンテナンスされておらず、プラグインとしても機能していないので消しておきましょう。

Photo Express for Googleでのエラー現象

ログを見ると以下のようなエラーが出ていました。

[error] 21434#0: *63 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Cannot redeclare str_starts_with() (previously declared in /xxx/wp-includes/compat.php:387) in /xxx/wp-content/plugins/photo-express-for-google/photo-express.php on line 250"

エラーの原因

str_starts_with()というメソッドが複数定義されていてエラーになっていました。

今回でいうと「wp-includes/compat.phpの387行目」と「photo-express-for-google/photo-express.phpの250行目」。

なので、もう機能していないphoto-express-for-googleの方をなんとかすればOK。

エラーの対応方法

エラーで管理画面にログインできないので、サーバーにターミナルでログインしてなんとかするしかなさそうです。

Photo Express for Googleプラグインのファイルを削除してしまっても良いですが、いったん復旧させてからプラグインを管理画面で削除することにします。

サーバーにターミナルでログインし作業していきます。
※ファイルのパスはそれぞれの環境に合わせて変更してください。

$ vi /xxx/wp-content/plugins/photo-express-for-google/photo-express.php
     function convert_to_https( $url ) {
-         if ( ! str_starts_with( $url, "https" ) && str_starts_with( $url, "http" ) ) {
+         if ( ! pe_str_starts_with( $url, "https" ) && pe_str_starts_with( $url, "http" ) ) {
             $url = 'https' . substr( $url, 4 );
         }
 
         return $url;
     }

-     function str_starts_with( $haystack, $needle ) { 
+     function pe_str_starts_with( $haystack, $needle ) {
         return substr( $haystack, 0, strlen( $needle ) ) === $needle;
     }

【変更点その1】
「function str_starts_with( $haystack, $needle ) {」でstr_starts_with()メソッドを宣言していて重複していたのでメソッド名をpe_str_starts_withに変更。
※変更後のメソッド名はpe_str_starts_withじゃなくて、ほかの名称でも大丈夫です。

     function str_starts_with( $haystack, $needle ) { 
     ↓
     function pe_str_starts_with( $haystack, $needle ) {

【変更点その2】
str_starts_with()メソッドを使用していた箇所「if ( ! str_starts_with( $url, "https" ) && str_starts_with( $url, "http" ) ) {」のメソッド名を変更後のメソッド名に変更。

         if ( ! str_starts_with( $url, "https" ) && str_starts_with( $url, "http" ) ) {
         ↓
         if ( ! pe_str_starts_with( $url, "https" ) && pe_str_starts_with( $url, "http" ) ) {

これでエラーが解消に画面が表示できると思います。

そしたら管理側にログインし、プラグインのところからPhoto Express for Googleを削除できます。

【WordPress】SiteGuardのログイン認証画像が表示されないときの対応

WordPressのプラグインでSiteGuardを使用していて、急にログイン認証画像が表示されなくなりました。
ログインできなくて困る。。

ログインできない現象

ログイン画面の認証画像が表示されず、何を入力していいかわからない。
404 Not Foundで画像が表示されていないようです。

ログイン画面でSiteGuardの認証画像が表示されない

ログインできるように対応

サーバにSSHでログインしてプラグインを無効してください。
プラグインを無効にするには、ディレクトリ名を変更すればOKです。

wordpressのrootディレクトリに移動してから、

$ mv DocumentRoot/wp-content/plugins/siteguard DocumentRoot/wp-content/plugins/siteguard.hold

これでSiteGaurdが無効になってログインできます。

再度SiteGuardの画像認証を有効

ログイン後に先ほど変更したディレクトリ名を元に戻します。

$ mv DocumentRoot/wp-content/plugins/siteguard.hold DocumentRoot/wp-content/plugins/siteguard

そのあと、SiteGuardの設定から画像認証をONにします。
が、エラーメッセージが表示されてしまいます。

SiteGuardの画像認証の設定ONが画像ファイル書き込みで失敗

認証画像の書き込みに失敗しているので、書き込み先のディレクトに権限を付与。

で、どこに認証画像を書き出すのか?
SiteGuardのバージョン1.7.5では「wp-content/siteguard/」配下に画像を書き出します。

wp-content配下にそもそもsiteguardというディレクトリーがないので作ります。
wp-contenfの権限を上げるのは微妙なので。

$ mkdir wp-content/siteguard
$ chmod 777 wp-content/siteguard

※所有者:グループは適時変更してください。

これで、画像認証をONにできます。
お疲れさまでした!

【WordPress】Customizer Export/Importでインポートした内容を削除する方法

WordPressのプラグイン「Customizer Export/Import」を使用して、インポートした内容・設定を削除する方法をご紹介します。

Customizer Export/Importでインポートした内容を削除は、他のプラグインを使用することで削除できます。

インポートしたけど、一旦なかったことにしたい、無効化したいという方は参考にしてみてください。

Customizer Export/Importの設定リセット

Customizer Export/Importの設定をリセット(削除)するには、「Customizer Reset」というプラグインを使用することでリセット可能です。

Customizer Export/Importでは、インポートもしくはエクスポートしかできないので要注意です。

リセット手順は簡単です。

  1. まずは、プラグインの新規追加で「Customizer Reset」で検索して、インストール&有効化してください。
  2. その次に、「外観」>「カスタマイズ」と進んでください。
  3. 左側のサイドメニュー上部に「Reset」ボタンが表示されていると思うのでクリック。

これで、Customizer Export/Importでインポートした内容をリセット(削除)できます。

削除後に、またインポートできますのでお好きなものをインポートとしてください。

以上です。良きWordpressライフを!

WordPressのウィジェットが使いづらい!従来のウィジェットに戻す方法

WordPressがまた使いづらくなりましたね。

WordPressのバージョン5.8になったあたりから、外観のウィジェットがものすごく使いづらさアップ。
見づらいし、設定しづらいしでなんでこうしたのって感じです。テーマによってはデザインが変わってしまったりするので困ってる方もいるのではないでしょうか。

プラグイン導入で解決できたのでメモ。

使いづらい点

まずは、使いづらいと思った点。

1. 単純に見づらい(個人的な感想)
2. ブロックの概念がわかりづらい
3. 柔軟性が増してるようでめんどくさい

カテゴリーのリンクを表示するのにも、タイトルとカテゴリーリンクを別々に設定しなきゃいけなかったりします。
柔軟性アップのようにも感じますが、1つにまとめるならグループ化したり、しなかったら削除がめんどくさかったりとあまりメリットを感じられませんでした。

対応方法

対応方法として「Classic Widgets」というプラグインが良かったです。
ウィジェット編集ページがバージョンアップする前の旧バージョンになります!

ドラッグ&ドロップする使い方もしてたので、旧バージョンの方が好みです。

「Classic Widgets」のプラグインは、インストールして有効化すればOK!

Classicつながりで記事投稿を旧バージョンに戻す方法はこちら
WordPressで「>」などが勝手にエスケープされる問題を解決する方法

良きWordpressライフを!

WordPressで「>」などが勝手にエスケープされる問題を解決する方法

WordPressのバージョン5になったあたりから、投稿のエディタがものすごく使いづらくなりました。
ほんと、余計なお世話的な機能満載で記事が書きづらくてしょうがないです。特にテキストエディタで投稿してる人は書きづらいと感じてる人が多いのではと思います。

プラグイン導入で解決できたのでメモ。

使いづらい点

まずは、使いづらいと思った点。

  • 1. <や>、&などが勝手にエスケープされる
  • 2. 自動整形機能

1については、ソースコードとかを載せる人にはやっかいな問題。
「>」が「&gt;」に、「&」が「&amp;」とかに勝手に変換されてしまう現象です。

エディタエリアからフォーカス外した時点で、変換されてしまいますし、しまいには編集ページを開くたびに「&」が「&amp;」に変換され、どんどん&amp;が増えていく始末。

2については、エディタエリアからフォーカスが外れた際に自動でインデントやスペースが整形される現象。
整形されるだけならまだいいのですが、整形の度に表示部分がずれてカーソル見失ったりするので面倒。

特に、htmlコードを入力途中でフォーカス外れたときの補完がやっかいです。
勝手に途中の文章を挟んだり、おかしくなります。

対応方法

上記2つの対応方法として「Classic Editor」というプラグインが良かったです。
投稿編集ページがバージョンアップする前の旧バージョンになりますが、勝手にエスケープ問題も自動整形も解決します!

あと、新バージョンだとパーマリンクの設定に気づきにくく忘れがちなので、旧バージョンの方が好みです。

「Classic Editor」のプラグインはインストールして有効化すればOK!

Classicつながりでウィジェット編集を旧バージョンに戻す方法はこちら
WordPressのウィジェットが使いづらい!従来のウィジェットに戻す方法

良きWordpressライフを!