「wordpress」タグアーカイブ

【解決済】WordPressで「このサイトで重大なエラーが発生しました。対応手順については、サイト管理者のメール受信ボックスを確認してください。」WordPressのトラブルシューティングについてはこちらをご覧ください。」と言われログインできない時の対処法

WordPressで「このサイトで重大なエラーが発生しました。対応手順については、サイト管理者のメール受信ボックスを確認してください。」と言われログインできない

自動アップデートなどが原因で、特に何も触ってないのに「このサイトで重大なエラーが発生しました。対応手順については、サイト管理者のメール受信ボックスを確認してください。」と言われて急に管理画面にログインできなくなることがある。

こんな画面が出たら要注意。でもフロントサイトは通常通り見えているし、解決方法はあるしそれほど難しくないので焦る必要はない。

手順1 wp-config.php にWP_DEBUG trueを入れる

まず、FTPソフトなどでダウンロードした wp-config.php に

define( 'WP_DEBUG', true );

を追記して上書きアップロードする。

記載場所は下記画像辺りに入れておけば良い。

これで、どの部分が問題で管理画面にログインできないのかが見えるようになる。

なお、セキュリティ的に、バグ箇所を確認した後で

define('WP_DEBUG', false);

に戻しておく方がいいだろう。

手順2 該当プラグインのフォルダをリネームして削除

バグ箇所が分かれば、その原因のプラグインをリネームして無効化することでトラブルはとりあえず解消される。

今回の例では Search Regex というプラグインが原因だった。
WordPress 5.9系と相性が悪いようだ。

FTPソフトで、wp-content/plugins/ の中から、該当のプラグインのフォルダごと名前を変更しよう。

今回の場合は「search-regex」なので「search-regex.bk」でも「search-regexmukou」でも何でもいい。
名前を変えてしまえばそれでOK。

これでログインできるはずだ。

手順3 該当プラグインの再インストールまたは削除

ログインした後、名前を変更して無効化したプラグインは動いていない。

使いたい場合は最新版を再インストールする。

もしくは不要であればアンインストールして、FTPソフトの方で名前を変更したプラグインの残骸をフォルダごと削除すればOK。

【解決済】削除に失敗しました: このサイトで重大なエラーが発生しました。WordPressのトラブルシューティングについてはこちらをご覧ください。と出てプラグインが削除できない時の対処法

ワードプレスのプラグインがエラーで削除できない時の対処法

何かのタイミングでWordPressのプラグインが削除できなくなる時がある。

エラーの文言は「削除に失敗しました: このサイトで重大なエラーが発生しました。WordPressのトラブルシューティングについてはこちらをご覧ください。

この時の対処法メモ。

プラグインを強制的に削除したい時(再インストールも同じ手順)

プラグインの管理ページで「削除」ボタンを押しても「削除しています…」と出るだけでページ上部にエラーメッセージが表示されるだけ。

こんな場合は管理画面からの削除は無理なので、サーバーのコントロールパネル又はFTPソフトから削除しよう。


FTPソフトで接続し、wp-content/plugins の中の該当のプラグインをフォルダごと削除してしまう。

なお、削除ではなく、プラグインを強制停止したいだけの場合は、削除ではなくプラグインのフォルダ名を変えてしまえばいい。

これだけで、管理画面からもきれいさっぱり消えてくれる。

【解決済】WordPressで投稿内容が表示されない、急に投稿の本文だけ表示されなくなった時の対処法。文章真っ白、ブログの内容が消えた

ワードプレスで急に投稿の本文だけ表示されなくなった時の対処法

元々は

タイトル、サイドバー、コンテンツもちゃんと表示されていた。

ある時から、気づくと

コンテンツだけ消えていた。

公開日やカテゴリは見えているが、その直後にフッターがきている。

ソースを覗いてみると、やはりコンテンツは消えている

だから、原因はCSSではない。
 

WordPressアップデートのタイミングで表示されなくなっていた

本文真っ白になってると気づいた数日前に、

WordPressの自動アップデートが走っていたので、タイミングはほぼ確実にこれだろう。
 

ある日突然見えなくなった場合は、根本原因はプラグイン

結論から言うと、今回は「Ktai Style」というプラグインが原因だった。

Ktai Style
有効化 | 削除
携帯電話用に軽量化したページおよび簡単な管理インターフェースを提供します。

となっているやつだ。

WordPressのバージョンが上がったので、

PHPを7系に半ば強制的に変更させられた。

そのあおりを受けて、プラグインのKtai Styleが原因で内容が表示されなくなってしまった。

Ktai Styleはそこまで必要なプラグインではなかったので、今回はプラグインごと削除して終了。

【解決済】さくらの共用サーバーで運用中のWordPressでPHPバージョンを7に上げても「PHPの更新が必要です」が消えない時の対処法

PHPバージョンが5系(5.6.3など)だとWordpressにPHPの更新が必要ですと表示される。それを、7系(7.3.6など)に上げても、なぜかこの表示が消えてくれない時の対処法


PHPの更新が必要です
サイトが安全ではないバージョンの PHP を実行していることを検出しました。
PHP とは何ですか ? サイトにどう影響しますか ?
PHP は WordPress の開発や保守に使用されているプログラミング言語です。PHP の新しいバージョンはより高速で安全なため、アップグレードするとサイトのパフォーマンスに良い影響を与えます。
PHP の更新についてさらに詳しく (新しいタブで開く)

と書かれてたメタボックスが表示される。

PHPバージョンを7.3.xにちゃんと上げても、メタボックスが消えない場合がある。

さくらの共用サーバで確認済み。
 

実際にPHPバージョンは上がってないのか?

サーバーで確認しても、PHPを走らせて確かめてみても、実際にはPHPバージョンは7系に上がっているようだ。
 

じゃあアラートが消えない原因はなに?

まず、.htaccessの中身を確認してみよう。

FTPソフトなどで.htaccessをDLして確かめてみるとこんな感じ。

Action myphp-script /php.cgi
AddHandler myphp-script .php .html

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

# BEGIN WordPress 以下は普通のWordpressの記述。

上の Action myphp-script /php.cgi これが問題の元凶。

次に php.cgi の中身 を確認してみる。これもFTPソフトでDLしてみる。

#!/bin/sh
exec /usr/local/php/5.6/bin/php-cgi
#exec /usr/local/php/5.4/bin/php-cgi

原因これでした。exec は外部コマンドの実行で、ここが、php5.6になっちゃってる。
php5.4はコメントアウトされているので関係ない。

しかし、行自体を削除してしまうと、さくらサーバーでは、php が動かなくなる。つまりWordPressは動かない。

という訳で、 ↓↓↓

さくらサーバーの場合、バージョンを指定せずにphpを動かすには下記のコードを追加。

exec /usr/local/bin/php-cgi

一応元の記述もコメントアウトで残すと、 ↓↓↓

こんな感じでいいと思う。

#!/bin/sh
#exec /usr/local/php/5.6/bin/php-cgi
#exec /usr/local/php/5.4/bin/php-cgi
exec /usr/local/bin/php-cgi

php.cgiを変更して、FTPでアップロードして上書きしたら、「PHPの更新が必要です」は消えました。

プラグインを使わず、WordPressでタグクラウドの表示の順番を制御する。ランダム、使用頻度順など

WordPressで、タグクラウドがいつも同じものしか表示されないのでランダムで表示してみた

WordPressのタグは限りなく投稿が可能。

でも、デフォルトの状態だと登録名順でしか表示されないので、どれだけたくさん入力しても、最初に登録した30個しか表示されない。
これをランダムで表示させるようにしたい。

functions.phpへの記述で、使用頻度で抽出させることはできる
//タグクラウドの順番を使用頻度で
function my_tag_cloud($args) {
 $myargs = array(
 'orderby' => 'count', //'name'タグ名(初期値), 'count'使用回数
 'order' => 'RAND', //'ASC'昇順(初期値), 'DESC'降順, 'RAND'ランダム
 'number' => 50 // 表示数 '0'と書くと全てのタグを出力
 );
 $args = wp_parse_args($args, $myargs);
 return $args;
}
add_filter( 'widget_tag_cloud_args', 'my_tag_cloud' );

これで、使用頻度の高い順に50個抽出して、それをランダムに並べなおして表示。

とすることができる。

ただし、これだと、使用頻度が低いモノまで含めて50個をランダムに抽出して並べることはできない。
 

使用頻度に関わらず、全てランダムに抽出する方法は?

number0 にして無制限に全部抽出してからランダムに並び替える。

wp-includes/category-template.php

wp_tag_cloud() のソースが書いてあるので、その辺をいじくって、出力する個数を50個にする。

で抽出。

とする必要がある。

SANGOで、投稿のカテゴリーを複数登録し、ちゃんと複数カテゴリー表示させる方法 WordPress BuddyPressカスタマイズメモ

WordPressのサンゴテンプレートで記事投稿のカテゴリーを複数選択しても、1個しか表示されない件

サンゴのテンプレートでカテゴリーを複数個選択しても…

左上のオレンジの楕円の部分がカテゴリ名だが、
↓こんな感じで、1個目のカテゴリーしか投稿記事の画面では表示されない

これを、↓こんな風に、ちゃんと複数個表示させる。

 

functions.phpへの記述

色々な記述方法が考えらえるが、元々のSANGOの記述をできるだけ踏襲する形で書く。

//カテゴリーを記事一覧に複数表示
function output_catogry_link() {
 $cat = get_the_category();
 if (!$cat) {
  return false;
 }
 if ($cat) {
 $i = 0;
 foreach( $cat as $category) {
 $catId = $category->cat_ID;
 $catName = esc_attr($category->cat_name);
 $catLink = esc_url(get_category_link($catId));
 if ($catLink && $catName) {
  echo '<a class="dfont cat-name catid' . $catId . ' cat-multi' . $i . '" href="' . $catLink . '">' . $catName . '</a>' ;
  }
  $i = $i + 1;
  if ( $i >= 8 ) {
   break;
  }
  }//foreach
 }//if($cat)
 }

カテゴリーがある分だけ取得して、ソースとして吐き出されるので、ソースはこんな感じ。

<a class="dfont cat-name catidXX1 cat-mult0" href="カテゴリー1へのリンクURL">1のカテゴリー名</a>
<a class="dfont cat-name catidXX5 cat-mult1" href="カテゴリー5へのリンクURL">5のカテゴリー名</a>
<a class="dfont cat-name catidXX6 cat-mult2" href="カテゴリー6へのリンクURL">6のカテゴリー名</a>
...

classにclass に “cat-multi$i” ($iは変数でカテゴリのー数0から数字が順番に入る)

cat-multi数字 にCSSで配置を指定してやればいい。

なお、スペースの関係上、今回は上限を8個としている。
 

CSS (管理画面→外観→CSS編集→追加CSS)への記述

.cat-multi0{
 top: 3px !important;
}
.cat-multi1{
 top: 27px !important;
}
.cat-multi2{
 top: 51px !important;
}
.cat-multi3{
 top: 75px !important;
}
.cat-multi4{
 top: 99px !important;
}
.cat-multi5{
 top: 123px !important;
}
.cat-multi6{
 top: 147px !important;
}
.cat-multi7{
 top: 171px !important;
}

で、こんな風になる。

今回は上から下に並べているが、色を変えたり、横にずらしたりと色々できるはず。

WordPressの管理画面、ダッシュボードでオリジナルパーツ(独自メタボックス)を追加する方法 BuddyPressカスタマイズメモ

管理画面のダッシュボードで、独自のパーツ(メタボックス)を作って追加表示させる

WordPressのSNSプラグイン、BuddyPressを導入すると不特定多数のメンバーが参加することになる。

管理者以外には、Wordpressのニュース、WordPress イベント、ようこそ画面など(ダッシュボードのメタボックスと呼ぶ)不要なものは全て非表示にしたうえで、独自のメタボックスを追加する方法を紹介。

ちなみに非表示にする方法はこちらを参照:
ダッシュボード画面(管理画面)の「アクティビティ」「クイックドラフト」などを非表示 WordPress BuddyPressカスタマイズメモ
 

独自メタボックス追加したい場合

普通の管理画面は色々と便利なウィンドウがあるが、記事を投稿してもらう人には不要なものばかり。

なので、不要なものを非表示にした上で

オリジナルの「クイックアクセス」というメタボックスを追加してみよう。

 

追加方法と記述のしかた

記述は簡単で、functions.php に下記のように書くだけ。

function my_meta_box(){
 add_meta_box( 'my_meta_box', 'クイックアクセス', 'my_meta_box_in', 'dashboard', 'normal', 'core' );
}
function my_meta_box_in(){
 echo '<a href="https://xxxxxxxx.com/">ホームページを確認</a><br />';
 echo '<a href="https://xxxxxxxx.com/wp-admin/post-new.php">新しく記事を書く</a><br />';
 echo '<a href="https://xxxxxxxx.com/wp-admin/profile.php">個人設定やプロフィールを編集</a><br />';
}
add_action( 'admin_menu', 'my_meta_box' );

‘クイックアクセス’の部分はタイトルなので、好きなタイトルでOK。

今回はリンクを貼り付けただけだが、phpで様々な機能を持たせることができる。

ビジュアルエディター見た目を実際の投稿の色や見た目と揃える方法 WordPress BuddyPressカスタマイズメモ SANGOテンプレート

WordPressのビジュアルエディターで、H2やH3のをつけると、実際のCSSと違うようになるので、それを揃える方法

WordPressのSNSプラグイン、BuddyPressを導入すると不特定多数のメンバーが投稿するようになると、投稿画面のビジュアルエディターの見た目と、サイトフロントの見た目を揃えておいた方がいい。

別のCSSを用意してそれをビジュアルエディター用のCSSとして読み込ませる必要がある。
 

投稿画面のプレビュー用の別のCSSを用意する

SANGOのテーマの場合は
library/css/editor-style.css
に投稿画面用のCSSが入っている。

それを子テーマに別のCSSを入れて読み込ませてみる。

//スタイルとビジュアルエディターの見た目を揃える
function correct_visual() {
add_editor_style(get_stylesheet_directory_uri() . '/library/css/editor-style.css');
}
add_action('admin_init', 'correct_visual', 20);
get_stylesheet_directory_uri()

とパスを書いておくことによって、子テーマのURLが取得されるのでこれでOK。

例えば、
「オレンジ見出し」を実際のページで青くした場合、オレンジのプレビューになるのに、実際のページでは青。

editor-style.css の中に

/*オレンジ見出し*/
body#tinymce.wp-editor .hh8 {
  padding: 0.5em;
  color: #494949;
  background: #fffaf4;
  border-left: solid 5px #ffaf58;
}

この color や、background の色を変えればいい。

WordPressでデータベース接続確立エラーになり、Not enough memory for blob データベースの修復(Repair)もできない時の対処法

データベースエラーになった時の状況確認

データベース接続確率エラーとWordpressで表示される時の状況確認。

・インストール後やサーバー移転後ずっとエラーなのか、ある時急にエラーになったのか
→ 最初からの場合は、データベース名、ホスト名、ユーザー名、パスワード、プリフィックスなど何かしらが間違えている可能性が高い。
まずはwp-config.phpの中のデータベースの設定などを確認。

ある時を境に、急にエラーになった場合は下記確認。

・サーバー側のエラーなのか、データベースのテーブルが壊れているのか
→ サーバーがダウンしている、メンテナンス中などの場合もこのエラーが表示される場合がある。緊急でないなら数時間~1日待ってみる。
国内サーバーなら、ホスティング会社のWebサイトなどに障害状況が掲載される場合が多いのでチェック。
海外サーバーなら、カスタマーサポートにメールかチャットで連絡してみる。

データベースの異常を確認するには、phpMyAdminにログインして、テーブルが「in use」になっているかどうかを確認すれば、データベースが壊れているかはすぐに分かる。

 

phpMyAdminを使いたくない(使い方が分からない)人は?

蛇足だが、phpMyAdminを使いたくない人は、

wp-config.phpのどこかに

define( 'WP_ALLOW_REPAIR', true );

と記述してから

ブログURL/wp-admin/ にアクセスしてみてWordPressからDBの修復を試みる事ができる。

これで修復できればいいが、できない場合は下記へ。
 

phpMyAdminからのデータベース修復

サーバーの管理画面などからphpMyAdminへログイン。

該当のデータベースを開くと

テーブルで「in use」となっているものがあり、「in use」は、破損を意味している。
今回は、wp_options が死んでいる。
あと他にも、wp_commentmeta もよく死ぬ。

壊れているテーブルの左のチェックボックスを選択してから上のメニューで「Repair table」を選ぶ。

日本語版だったら「テーブルの修復」かな?

上に緑で「Your SQL query has been executed successfully」って出たので、やった!成功だ!と思いきやエラーでした。

「Not enough memory for blob at 64384 (need 16862691..」

need xxxxx の部分の数字が途方もなく大きいので、これはもうまともな手法では直せないなと理解。

このエラーが出た時は 修復(repair)では直せない。

ちなみに、シェルアクセスでコマンドを打っても同じ、当然WordPressのdefine( ‘WP_ALLOW_REPAIR’, true );で、管理画面からリペアを試みても無理だ。
 

データベースのバックアップの復元、それが無いならサーバー管理会社にお願いしてリストア(ロールバック)してもらう。

自分で定期的なバックアップをとっていればそれをリストアしてもいい。

データベースのバックアップなんかしてねーって場合は、サーバーの運営会社(ホスティング会社)に連絡して最新のデータベースのバックアップへ復元してもらうしかない。

アドミンバーの右上の吹き出しっぽいJetpack wordpress.comからの通知(stats)を消す方法 WordPress BuddyPressカスタマイズメモ your stats are booming!とか getting lots of traffic

WordPress管理画面のアドミンバーの右上にでてくる all とか unreadとかの通知を非表示に

WordPressのSNSプラグイン、BuddyPressを導入すると不特定多数のメンバーが参加することになる。

jetpackのakismet(つまりwordpress.com の API キー)で、複数サイトで同じアカウントを使いまわしていると、この通知で

Your stats are booming! [他のサイトの名前] is getting lots of traffic.
とか
Someone commented on [他のサイトの名前]とか表示されて嫌な感じになる。

functions.php への記述で非表示に

//アドミンバーの右上の吹き出しっぽいwordpress.comからの通知を消す
if (!current_user_can('administrator')) {
function admin_bar_remove_item( $wp_admin_bar ) {
 $wp_admin_bar->remove_menu('notes');
}
add_action( 'admin_bar_menu', 'admin_bar_remove_item', 1000 );
}

“管理者”も非表示にする場合は、一番上と一番下の

if (!current_user_can('administrator')) {

}

を削除すればいい。