タグ付けされた質問 「widgets」

ウィジェットは、WordPressテーマのセクションを動的に構築するために使用される設定可能な要素です。

6
コードを配置する場所:pluginまたはfunctions.php?
プラグインまたはテーマに属するコードの種類を決定するための簡単なスキームはありfunctions.phpますか? あります 多く の場合、多くの議論そのトピックについては、ワードプレスの内部の仕組みに関するいくつかの誤解がある主な理由は、。私は意見ではなく、事実に基づいて答えを求めています。 これらのポイント(およびおそらくそれ以上)の処理方法を説明する必要があります。 カスタム投稿タイプと分類 お問い合わせフォーム ショートコード カスタムウィジェット add_theme_support( 'automatic-feed-links' ); カスタムmeta要素のようなSEO機能 テーマスイッチ 多くの場合、両方の長所と短所があります。functions.phpファイルの最も人気のあるコードのベストコレクションには、少なくとも議論の余地のある答えとして多くのコードスニペットがあります。 初心者が理解できる基準、おそらくチェックリストが必要です。それには理由があります。 メタサイトのChip Bennettによる関連する質問も参照してください。「プラグインなしで」ソリューションを具体的に求める質問 関連:ここで見つけたコードスニペットをWeb上のどこに配置しますか?

3
functions.php、ウィジェット、プラグインの間で、どちらが最初にロードされますか?
お客様は、使用する特定のカルーセルプラグインをウィジェット化できるかどうかを尋ねます。つまり、プラグインの関数を呼び出すfunctions.php内にウィジェットを作成する必要があります。つまり、functions.phpファイルが読み込まれたときにWordPressで関数を使用できるように、プラグインのコードを最初に読み込む必要があります。それはうまくいくでしょうか?

4
プログラムでウィジェットをサイドバーに追加する
プログラムでウィジェットを2つのサイドバーに追加したいと思います。公式の方法が見つかりませんでしたか? データベースを調べ始めました。サイドバーにウィジェットを配置するのは「sidebars_widgets」オプションであることがわかりました。オプションを見ると、ウィジェット名には末尾に「widget_name-6」のような番号が追加されています。その番号はどこから来たのですか? これを修正する方法についてのアイデアはありますか?
62 widgets  sidebar 


2
ウィジェットがバックエンドに追加されたときにJavascriptを実行する
JavaScriptコントロールがアタッチされているウィジェットがあります。 ウィジェット管理ページのロード時にウィジェットが存在する場合、コントロールは正しく機能します。 新しいウィジェットを追加すると、それらは正しく機能せず、マークアップが表示されますが、javascriptイベントは有効になりません。 新しいウィジェットを保存すると、フォームがリロードされると、コントロールが正しく作成され、機能するようになります。 ページを更新すると、既存のウィジェットのみの問題も修正されます。新しいウィジェットにはまだこの問題があります。 具体的には、これらのポイントで選択入力に対してselectizeを実行しています。 文書準備完了 Ajaxcomplete 必要に応じて各イベントでコードが実行されることを確認しましたが、結果は期待どおりではありません。 問題を実証するテストプラグインは次のとおりです。 https://gist.github.com/Tarendai/8466299 変換できることがわかったすべての選択要素で増加するカウンターがあることがわかります。 ノート: ウィジェットページがロードされると、JSコンソールで期待どおりにカウンターが増加するのがわかります。 新しいウィジェットを追加すると、コードが実行されますが、found.lengthが0であることからわかるように、実行可能な選択要素の検索に失敗します。このタイプのすべての新しいウィジェットは、選択要素を持っている select要素にはそれらを識別するためのクラスがあり、selectizeライブラリが適用されると、このクラスは削除され、既存のウィジェットでの複製と再処理が防止されます。 selectizeを使用する前に、同じ問題のあるSelect2を使用しました AJAXコードをコメントアウトすると、新しいウィジェットには標準の選択入力が含まれることになります。彼らはしない。なぜそうなのか分かりません それでは、変更を行う前に保存を更新/クリックするようにユーザーに通知せずに、selectizeコントロールを機能させるにはどうすればよいですか?

1
ウィジェットのバックエンドフォームにチェックボックスを含める方法
ウィジェットのバックエンドにチェックボックスを含めようとしています。しかし、ユーザーが値を送信した後、値を取得できません(オンまたはオフ)。値は「esc_attr($ check)」に保存されると思っていました(テキスト入力を使用する場合と同様)が、取得できません。 これは私が今試していることです: public function form( $instance ) { $check = isset( $instance[ 'check' ] ) ? $instance[ 'check' ] : 'off'; echo esc_attr( $check ); // If the input is type text it outputs the value ?> <input class="widefat" id="<?php echo $this->get_field_id( 'check' ); ?>" name="<?php echo $this->get_field_name( 'check' …
17 php  widgets 

4
特定のショートコードまたはウィジェットが存在する場合にのみスクリプトをロードする
特定のショートコードが存在する場合、ヘッダーにスクリプトを追加できるように、ロードする前にページ/投稿コンテンツをフィルタリングする方法が必要でした。多くの検索の後、私はこれをhttp://wpengineer.comで見つけました function has_my_shortcode($posts) { if ( empty($posts) ) return $posts; $found = false; foreach ($posts as $post) { if ( stripos($post->post_content, '[my_shortcode') ) $found = true; break; } if ($found){ $urljs = get_bloginfo( 'template_directory' ).IMP_JS; wp_register_script('my_script', $urljs.'myscript.js' ); wp_print_scripts('my_script'); } return $posts; } add_action('the_posts', 'has_my_shortcode'); これは絶対に素晴らしいことであり、まさに私が必要としていたことをしました。 今、私はそれをもう少し拡張し、サイドバーにも同じことをする必要があります。特定のウィジェットタイプ、ショートコード、コードスニペット、またはスクリプトをロードする必要がある場合に特定するために機能する他の方法によるものです。 問題は、サイドバーが読み込まれる前にサイドバーのコンテンツにアクセスする方法がわからないことです(問題のテーマにはいくつかのサイドバーがあります)

3
「URLから挿入」タブをカスタム3.5メディアアップローダーに追加する方法はありますか
ボタンがクリックされたときに次のJavaScriptを実行して、WP 3.5メディアアップローダーをウィジェットに挿入しました。 var frame = wp.media( { title : 'Widget Uploader', multiple : false, library : { type : 'image' }, button : { text : 'Select Image' } } ); frame.on( 'close', function() { var attachments = frame.state().get( 'selection' ).toJSON(); imageWidget.render( widget_id, widget_id_string, attachments[0] ); } ); frame.open(); return …
17 widgets  uploads  media 

4
サイドバーのウィジェットの数を制限する
ウィジェットのスポットの数が限られている(設計上)カスタムウィジェット化領域(フッターなど)を使用する場合、ユーザーが特定のウィジェット化領域に含めることができるウィジェットの数を制限できますか?ソリューションがバックエンドにあるかフロントエンドにあるかは関係ありません。ありがとうございました。
17 widgets  sidebar 


2
編集者にサイドバーへのアクセスを許可する
編集者ロールに、サイドバーとそのコンテンツの編集へのアクセス権を付与したいと思います。私はそこにテキストウィジェットを持っています。このテキストウィジェットを編集するには、ユーザーは管理者である必要があります-これは最悪です。サイドバーを編集するためのアクセスを許可する編集者ロールに許可を付与するにはどうすればよいですか?

2
プラグインのカスタムウィジェット機能が機能しませんか?
作成したテーマの1つからコードを直接取り出しました。これは、サイドバーにドラッグアンドドロップできるウィジェットにパックされた、順序付けられていないリストの50の状態すべてのリストです。 問題は、PLUGINファイルでこのコードを使用しようとすると、次のエラーが発生することです。 Fatal error: Call to a member function register() on a non-object in C:\xampp\htdocs\wordpress\wp-includes\widgets.php on line 431 テーマでは機能するが、プラグインでは機能しないのはなぜですか?ちなみに、アクティブなテーマは、私がコードを削除したテーマではありません。 ここに私のコードがあります:http : //pastebin.com/ZeRWW3yb ありがとう。

4
ドラッグアンドドロップ後のウィジェットフォームの更新(WP保存バグ)
数ヶ月前にこれに関するバグレポートを投稿しました(WordPress trac(ウィジェットインスタンスフォームの更新バグ))。ここでもそれについて書いてみたいと思いました。たぶん誰かが私よりもこの問題に対するより良い解決策を持っているでしょう。 基本的に問題は、ウィジェットをサイドバーにドロップした場合、手動で保存を押す(またはページをリロードする)までウィジェットフォームが更新されないことです。 これにより、form()(保存ボタンを押すまで)ウィジェットインスタンスIDに依存する関数のすべてのコードが使用できなくなります。Ajaxリクエスト、カラーピッカーなどのjQueryのようなものは、すぐには機能しません。その関数からは、ウィジェットインスタンスがまだ初期化されていないように見えるからです。 汚い修正は、livequeryのようなものを使用して自動的に保存ボタンをトリガーすることです: $("#widgets-right .needfix").livequery(function(){ var widget = $(this).closest('div.widget'); wpWidgets.save(widget, 0, 1, 0); return false; }); ウィジェットのインスタンスが初期化されていないよう.needfixでform()あれば、クラスを追加します。 <div <?php if(!is_numeric($this->number)): ?>class="needfix"<?php endif; ?> ... </div> このソリューションの欠点の1つは、多数のウィジェットが登録されている場合、ブラウザが大量のCPUを消費することです。livequeryはDOMの変更を毎秒チェックするためです(これを特にテストしなかったのは単なる推測です)。 バグを修正するより良い方法のための提案はありますか?

1
自分の「最近の投稿」ウィジェットを作成したり、既存のウィジェットをカスタマイズしたりできますか?
最近の投稿ウィジェットを有効にして、現在表示するように設定されているウィジェットよりも多くの投稿があるときに「すべて表示」リンクを表示できるようにします。 また、特定のカテゴリや投稿を除外したいのですが。 私のテーマのfunctions.php経由で行うことは可能ですか? (1)既存のウィジェットをカスタマイズするか、(2)カスタマイズできるコピーを作成しますか?

3
条件付きでウィジェットのスクリプト/スタイルシートをHEADにエンキューします(ページに存在する場合のみ!)
私は次の条件でWordPressウィジェットのスクリプトとスタイルをロードしようとしています... スクリプトはHEADにロードする必要があります(そうでない場合)。 スクリプトは、ウィジェットが実際に表示されるときにのみロードする必要があります(非常に重いです)。 私は多くの検索を行ってきましたが、これは一般的な(未解決の)問題のように思えます... これは私が今まで持っている最高のものです... 以下は、テキストをサイドバーに出力する簡単なウィジェットです。jQueryを条件付きで(ウィジェットが実際に表示されるときに)正常にロードします...フッターにのみ!(注:このハックは後方互換性を提供する場合がありますが、WordPress 3.3でのみ機能する場合もあります)。 class BasicWidget extends WP_Widget { function __construct() { parent::__construct(__CLASS__, 'BasicWidget', array( 'classname' => __CLASS__, 'description' => "This is a basic widget template that outputs text to the sidebar" )); } function form($instance) { $instance = wp_parse_args( (array) $instance, array( 'title' => '' ) …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.