私は、カスタムの使い捨てウィジェットを作成するために毎晩クエストをしています。
カスタマイザのサイドバーパネルにそのインスタンスの1つが追加されるとすぐに、[利用可能なウィジェット]パネルのコントロールが無効として表示されます(または、完全に非表示になります)。
これは、次のようになります(右側の視覚的に「無効」なウィジェットに注意してください)。
カスタムウィジェットはすべて登録されていますが、使い捨ての要件に行き詰まっています。
スペック
- スケールは問題ではありません。登録されているサイドバーを1つだけと仮定しても問題ありません。このアプローチでは、ウィジェットの使用をサイドバーごとに1つ、またはすべての登録済みサイドバーごとに1つに制限することができます。現時点ではどちらも同じように問題ありません。
- バックエンドのウィジェットページは問題ありません。これは、バックエンドの[ 外観]の [ ウィジェット]ページで同じように機能する必要はありません。カスタマイザでのみ機能する必要があります。
ご質問
- 約250年前、すべてのウィジェットは「使い捨て」でした。それらの時代を取り戻し、カスタムウィジェットをWidget APIを介して1回だけ使用する正当な方法を知っている人はいますか?
- そうでない場合(かなりの量のコアファイルを掘り下げた後で想定しています)、CSSベースのアプローチ(ポインターイベント、疑似要素オーバーレイなど)を使用します。上記のウィジェットのインスタンスが作成されたら、「利用可能な」パネル(右側のパネル)のウィジェットコントロールに専用のCSSクラスを追加/削除する方法に関する基本的なアプローチを使用して、非常に限られたカスタマイザ/ JavaScriptの知識を助けてください。サイドバーパネルに追加/削除されましたか?
これまでに試したこと
- コアファイルのかなりの部分を掘り下げます。
- これとこれを読んでください。しかしどちらも実用的ではないようです。
- jQueryのイベントに手を加え
widget-added
、widget-updated
、とwidget-synced
、しかし、「ウィジェットを削除」のイベントを欠場。
トンありがとう!
更新:概念実証はまだ公開レポに公開していませんが、もちろん実行します。
解決
以下のクラフトナーが親切に共有したソリューションを、GitHubの概念実証プラグインにラップしました。
WP_Widget
たとえば、代わりにクラシックウィジェットAPIを使用することもできます。例:gist.github.com/westonruter/7141599