2012-03-21 3 views
0

twitterリンクをデータベースから変更したときに私のWordPressのサイドバーウィジェットが消えて、前のリンクをすべて新しいものに置き換えました。wp_optionsの下にあります。私はリンク以外の何も変えていないが、依然としてウィジェットが正面から姿を消してしまった、私が間違っていたこと、データベースからどうやってそれをやり遂げることができないのか。MySQLデータベース内のリンクの更新時にWordpressのサイドバーウィジェットが無効になる

答えて

1

私は確信していませんが、あなたの更新によってデータベースに無効なPHPが発生している可能性があります。データベースに複雑な構造体を文字列として格納するには、格納する前に値を直列化します。例えば

、以下

<?php 
    $example = array("a string", "another string"); 
    echo serialize($example); 
?> 

出力多くのwp_options値に似ています

a:2:{i:0;s:8:"a string";i:1;s:14:"another string";} 

。関連する部分は、 "文字列"の前の8です。それは文字列の長さです。その値を変更せずに文字列を別の長さに変更すると、PHP(およびWordPress)は値をシリアル化解除できません。例えば

Notice: unserialize(): Error at offset 22 of 61 bytes in D:\tmp\so.php on line 11 

<?php 
    print_r(unserialize('a:2:{i:0;s:8:"a different string";i:1;s:14:"another string";}')); 
?> 

結果

私はWordPressがあなたの更新後にそのエラーを襲った疑いがあります。

問題を解決するには、まず実行した更新を元に戻してから、シリアル化されたPHPが有効であるようにします。その後、管理画面で値を更新します。

管理画面からの更新が不可能な場合は、小さなPHPプログラムを書いて、現在のシリアル化された値を取得し、シリアル化を解除し、適切な値を変更してから、再度シリアル化します。シリアル化の結果をwp_optionsテーブルの新しい値として使用します。

+0

Thxはすばらしい説明です。これは適切なフォーマットでデータを適切にシリアル化していないという結果になると確信しています...オフセットを変更してしまえば、それを知ってしまうでしょう:) thx a lot !! – swapnesh

関連する問題