プラグインを更新後、サイトがエラーで表示されない
-
プラグインをいくつか更新していたところ、いくつか更新エラーが出たのち、突如管理ページから弾かれ、以降管理しているホームページにログインできません。閲覧も出来なくなってしまいました。
ログインしようとすると、エラーを沢山吐いてしまいます。
例えば、
Warning: Cannot modify header information – headers already sent by……というエラーが沢山出ています。functions.phpというファイルの最初の行がエラーの原因になっていると書いてありました。このような知識に疎いゆえ、何がheaderの妨げになっているのか分かりません。
以下該当部分と思しきコードです。<?if ( function_exists(‘register_sidebar’) )
いろいろなサイトを拝見して試しては見たものの、一向に直りません。
どうかお力をお借りしたいです。
宜しくお願い致します。
-
隣で見ているわけではないので詳細はわかりかねますが・・・
Cannot modify header information – headers already sent by
とあるから、プラグイン間 or プラグインとテーマの間で同じ関数が使われていることによるバッティングが起こったのでしょう。
ご返信下さりありがとうございます。
その場合、どのように対処するのが宜しいのでしょうか。情報が少ないので回答できる内容に制限があります。
(エラーメッセージの完全版とか、使用しているテーマ・プラグイン等)
FTP or ファイルマネージャーで問題のあるプラグインのディレクトリ名を変更すると停止されます。
例:hoge というプラグインに問題がある場合
該当ドメインのディレクトリ/wp-content/plugins/hoge/
上記を下記のようにリネームします。
該当ドメインのディレクトリ/wp-content/plugins/_hoge/返信頂きありがとうございます。
プラグインのフォルダ名をplugin_old、使用していた独自のテーマのフォルダ名をtheme_oldにして無効化することで、何とか管理画面には入ることが出来ました。しかしながら、テーマを有効化しようとするとエラーになってしまいます。
以下エラーです。
if (function_exists(‘register_sidebar’) ) register_sidebar(); add_theme_support(‘nav-menus’); # page判定 function is_activity() { global $is_activity; $is_activity= is_post_type_archive(‘record’) || is_post_type_archive(‘diary’) || is_singular(‘record’) || is_singular(‘diary’); return $is_activity; } add_action(‘after_setup_theme’, is_activity ); # ヘッダー画像表示 add_theme_support(‘custom-header’); # スクリプト読み込み function read_trunk8() { wp_enqueue_script(‘trunk8′, get_template_directory_uri().’/js/trunk8.js’, array(‘jquery’)); } add_action(‘wp_enqueue_scripts’, ‘read_trunk8’);
Parse error: syntax error, unexpected ‘endif’ (T_ENDIF), expecting end of file in ……
と表示され、unexpected endifの該当箇所は
<?php endif; ?>となっています。functions.phpのコードを弄っていたら上のようにコードがそのまま表示されるようになってしまいました。
おそらくこのコードが間違っていると思うのですが、大変申し訳ございませんが素人目には分かりませんでした。
お手数ですがどこが間違っていてこのようになっているのか教えていただけませんでしょうか。
(unexpected endifはまた別のファイルに対して表示されています。)unexpected endifの該当箇所は<?php endif; ?>となっています。
if (function_exists('register_sidebar') )
これはif (function_exists('register_sidebar') ) :
ではないですか?P.S.
コードがすごく読みにくかったので、改行とインデントを上手に活用することをおすすめします。
また、コードを記載する場合はコードの部分を選択後、code
ボタンを押してください。<?if ( function_exists(‘register_sidebar’) )
行頭が<?php
になっていませんから表示されてしまっているのでしょう。if (function_exists(‘register_sidebar’) ): register_sidebar(); add_theme_support(‘nav-menus’); # page判定 function is_activity() { global $is_activity; $is_activity=is_post_type_archive(‘record’) || is_post_type_archive(‘diary’) || is_singular(‘record’) || is_singular(‘diary’); return $is_activity; } add_action(‘after_setup_theme’, is_activity ); # ヘッダー画像表示 add_theme_support(‘custom-header’); # スクリプト読み込み function read_trunk8() { wp_enqueue_script(‘trunk8′,get_template_directory_uri().’/js/trunk8.js’,array(‘jquery’)); } add_action(‘wp_enqueue_scripts’,‘read_trunk8’);
コードを見やすくしました。仰っていたように直してみたのですが、依然コードがそのままエラーに表示されてしまいます。他に誤っている点はございますでしょうか。
お手数お掛けしてしまい申し訳ありません。宜しくお願い致します。
本来
'
であるべき部分が‘
や’
や′
になっていたりしませんか?
あと、add_action(‘after_setup_theme’, is_activity );
はadd_action('after_setup_theme', 'is_activity' );
だと思います。- この返信は5年、 1ヶ月前にDRILL LANCERが編集しました。
皆さまご返信下さりありがとうございます。
どうにかエラーにコードがそのまま表示されることは無くなりました。しかし、header.phpに発生していたエラーが依然治りません。
Parse error: syntax error, unexpected ‘endif’ (T_ENDIF), expecting end of file in ……
と表示され、unexpected endifの該当箇所のコードは
<?php endif; ?>
となっています。また、新たに
Warning: call_user_func_array() expects parameter 1 to be a valid callback, no array or string given in…
という初めて見るエラーが出てしまいました。
該当箇所付近のコードを以下に抜粋しました。`// Avoid the array_slice if possible.
if ( $the_[‘accepted_args’] == 0 ) {
$value = call_user_func_array( $the_[‘function’], array() );
} elseif ( $the_[‘accepted_args’] >= $num_args ) {
$value = call_user_func_array( $the_[‘function’], $args );
} else {
$value = call_user_func_array( $the_[‘function’], array_slice( $args, 0, (int) $the_[‘accepted_args’] ) );
}`ご教授願いたく存じます。お手数おかけしてしまい申し訳ございませんが、何卒宜しくお願い致します。
連投失礼致します。
Warning: call_user_func_array() expects parameter 1 to be a valid callback, no array or string given in…
のエラーは消えました。Parse error: syntax error, unexpected ‘endif’ (T_ENDIF), expecting end of file in ……
のエラーが依然残っています。
unexpected endifの該当箇所のコードは
<?php endif; ?>
となっています。宜しくお願い致します。
コードの全体像が見えないので意図もつかめていない状態です。
if ( function_exists( 'register_sidebar' ) ) : register_sidebar();
は
if ( function_exists( 'register_sidebar' ) ) : register_sidebar(); endif;
のような気がしてきました。
記載された部分に if 文が見当たりませんのでもっと前に問題があると思われます。
ちなみに、テーマはご自身で作成されたものですか?
その場合、 VSCode や Atom といった シンタックスハイライト機能に対応したものを使うことをオススメします。また、WordPress コーディング規約に則したカスタマイズを施すとなおよしです。テーマは3年ほど前に業者の方に頼んで作っていただいたもののようです。個人で作成したホームページではなく団体のホームページで、引き継がれたものです。なので自身でコードを入力してカスタマイズしたものではありません。
コードがかなり長く、全文載せるのは憚られるため、構造だけご説明致します。
<? if ( is_home() ) : ?>
<? elseif( $is_activity ) : ?>
<? else : ?>
という3つに対して、
<?php endif; ?>
が存在しているようです。これで伝わりますでしょうか…まるきり素人のため、頓珍漢なことばかり言っていて申し訳ありません。
宜しくお願い致します。if 文の構造は下記でひとまとまとまりです。
<? if ( is_home() ) : ?> (is_home()が真の時の処理) <? elseif( $is_activity ) : ?> ($is_activityが真の時の処理) <? else : ?> (その他のときの処理) <?php endif; ?>
<?php endif; ?>
が余計なところで呼び出されている可能性があります。P.S.
業者の方のサポートは受けられないのですか?
無理な場合はテーマの変更をするか、クラウドソーシングに頼るかしてみるといいかもしれません。
- トピック「プラグインを更新後、サイトがエラーで表示されない」には新たに返信することはできません。