web-dev-qa-db-ja.com

複数のサイドバーで使用するとカスタムランダム引用ウィジェットが壊れる

カスタムウィジェットを作成し、それをfunctions.phpに配置しました。あなたはここでウィジェットを見ることができます:

http://Pastebin.com/3uWpeaFx

(私はランダムな画像をつかむ同様のウィジェットも作成しました。これはペーストビンに含まれています。)

このウィジェットを使用すると、ユーザーは最大10ブロックのtext/HTMLをプラグインし、それらをJSの配列に格納し、JSを使用してランダムに表示することができます。

これらは、WPに同梱されているデフォルトのテキストウィジェットを基にした超単純なウィジェットです。 (私はPHP専門家ではないので、おそらくよりエレガントな方法でそれらを作成することができますが、それらは使いやすく、クライアントが必要としているものです。)

私が抱えている問題はこれです:

異なるページに表示されている複数の異なるサイドバーであっても、複数のランダムテキストウィジェットを使用すると、オリジナル以外のすべてのウィジェットが 'undefined'を返します。

あなたがボックスに入れたテキストは正しく保存されているようで、WP adminインターフェースを通して編集可能です。しかし、フロントエンドに表示するとなると、テキストを正しくエコーしません。

私はそれがウィジェットに欠けているのは簡単なことだと思います...何か手掛かり?

ありがとうございます。

1
bigsweater

親は必要ありません。動作していないウィジェットと動作しているウィジェットの違いは次のとおりです。

$text1 = apply_filters( 'widget_text1', $instance['text1'], $instance );

vs:

$text1 = apply_filters( 'widget_text1', empty($instance['text1']) ? '' : $instance['text1'], $instance, $this->id_base);

同じページに複数のランダムテキストウィジェットを配置することに気付きました。タイトルは機能しましたが、テキストコンテンツは機能しませんでした。そこで私はタイトルから各テキストインスタンスにプロパティ(空($ instance ...など))をコピーしました。

ウィジェット自体はインスタンス化されていましたが、テキスト領域はそうではありませんでした。少なくとも、それが起こっていたと私は思います。確かに知るのに十分なPHPを知りません。

2番目のバージョンが機能し、最初のバージョンが機能しない理由について誰かが洞察を持っている場合、私はそれを聞いてうれしいです。 :)

1
bigsweater