jetpack エラーコード: -32700 XML-RPCが動作不能 #WordPress

jetpack エラーコード: -32700

jetpackでWordPressの記事を自動的にソーシャルメディアにも連携しようとした所「エラーコード: -32700」が発生してしましました。
XML-RPCが利用できない模様。
結論から言うとテーマのfunctions.phpの記述の問題でした。

使用しているソフトのバージョンは

  • WordPress 3.8.1
  • PHP 5.5.0
  • jetpack 2.8

です。

jetpackデバッガでデバック

まずは原因を切り分ける為にjetcpackデバッカでデバックしてみました。
以下に示すURLからjetpackデバッガを利用できます。

http://jetpack.me/support/debug/

結果は以下に示す通りでした。

jetpack デバッガ

XML-RPCが使えない状態になっているみたいです。

トラブルシューティング

トラブルシューティングの方法として以下の方法が示されていました。

  • jetpack以外のPluginをすべて停止してみる
  • WordPressに付属のテーマに戻す

試して見たところ・・・テーマをデフォルトの物に戻すと現象が発生しない事が判明しました。

私の場合デフォルトの「Twenty Twelve」を改造して使っています。
そこで変更箇所を一箇所づつ元に戻して確認していった所・・・functions.phpに追加した関数を消すと現象が発生しない事が判明しました。
しかしfunctions.phpに追加した関数は正常に動作しています。

謎です。

ダメ元でfunctions.phpの記述を変えたら現象が発生しなくなった

以下に示す関数を追加していました。

add_action( 'customize_preview_init', 'twentytwelve_customize_preview_js' );
?>

<?php
//wp_head()実行時にget_current_category_marbee()を実行
add_action('wp_head', 'get_current_category_marbee');
// 現在のカテゴリを取得
function get_current_category_marbee() {
	global $_curcat_marbee;
	$_curcat_marbee = null;
	$cate_marbee = null;

	if( is_category() ) {
		//カテゴリー表示だったら
	 	$cat_now_marbee = get_the_category();
		// 親の情報を$cat_now_marbeeに格納
		//$cate_marbee = $cat_now_marbee[0];
		$cate_marbee = $cat_now_marbee->category_parent;
	} else if (is_single() ) {
		//シングルページ表示だったら
		$cates_marbee = get_the_category();
		$i_marbee = 0;
		$use_category_marbee = 0;
		foreach ($cates_marbee as $cate_marbee) {
			//未分類を除外した配列の一番初めのカテゴリを選択
			if(($cate_marbee->category_parent > 0) && ($use_category_marbee == 0)) {
				$use_category_marbee = $i;
			}
			$i_marbee++;
		}
		$cate_marbee = $cates_marbee[$use_category_marbee];
	}

	//カテゴリーのオブジェクトごと保持
	$_curcat_marbee = $cate_marbee;
	return $cate_marbee;
}
?>

<?php add_theme_support('menus'); ?>

注)最初の2行は「Twenty Twelve」デフォルトの最後の部分です。

 

この関数は動作していましたし・・・文法的にも間違っていないと思います。

これをダメ元で以下に示すように書き換えました。

add_action( 'customize_preview_init', 'twentytwelve_customize_preview_js' );

//wp_head()実行時にget_current_category_marbee()を実行
add_action('wp_head', 'get_current_category_marbee');
// 現在のカテゴリを取得
function get_current_category_marbee() {
	global $_curcat_marbee;
	$_curcat_marbee = null;
	$cate_marbee = null;

	if( is_category() ) {
		//カテゴリー表示だったら
	 	$cat_now_marbee = get_the_category();
		// 親の情報を$cat_now_marbeeに格納
		//$cate_marbee = $cat_now_marbee[0];
		$cate_marbee = $cat_now_marbee->category_parent;
	} else if (is_single() ) {
		//シングルページ表示だったら
		$cates_marbee = get_the_category();
		$i_marbee = 0;
		$use_category_marbee = 0;
		foreach ($cates_marbee as $cate_marbee) {
			//未分類を除外した配列の一番初めのカテゴリを選択
			if(($cate_marbee->category_parent > 0) && ($use_category_marbee == 0)) {
				$use_category_marbee = $i;
			}
			$i_marbee++;
		}
		$cate_marbee = $cates_marbee[$use_category_marbee];
	}

	//カテゴリーのオブジェクトごと保持
	$_curcat_marbee = $cate_marbee;
	return $cate_marbee;
}

add_theme_support('menus');
?>

注)赤色で示した最初と最後の行は「Twenty Twelve」デフォルトの最後の部分です。

 

要するにPHPのデリミタの書き方を変えただけです。

最初は追加関数用にデリミタを記述していました。
これを止めて
functions.php全体を覆っているデリミタに追加関数を含めた。
コレだけです。

納得はできないけど・・・現象は解決しました

後者の記述に変えるとjetpackデバッガでも正常の表示に変わりました。
jetpackデバッガ正常画面

jetpackでソーシャルメディアとの連携もできました。
jetpackでソーシャルメディアと連携できた

最初の記述でも

  • 文法エラーは出ていない
  • 関数自体は動作していた

なぜXML-RPCが使えなくなるのか・・・正直納得はできません。

  • WordPressのバグ
  • PHPのバグ

のいずれかのように思えます。
WordPressの方が怪しいかなぁ・・・

同様の現象に悩んでいる方も居るかも知れないと思って書き残しました。

コメントする際はまず運営ポリシーをご確認ください。m(_ _)m

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

広告