タグ付けされた質問 「plugin-development」

WordPressプラグインを使用すると、WordPressブログを簡単に変更、カスタマイズ、拡張できます。WordPressのコアプログラミングを変更する代わりに、WordPressプラグインを使用して機能を追加できます。

1
画像のインスタンスにオプションを追加します。(添付ファイル表示設定)
Wordpress 3.9で画像を表示するための再利用可能なシンプルなプラグインを作成しようとしています。レンガの壁にぶつかったようです。 画像のインスタンスにいくつかのオプションを追加できるようにしたいと思います。(「添付ファイル表示設定」の詳細)。画像サイズのドロップダウンを無効にする(淡色表示する)、または固定のページ位置などのオプションを示す「レスポンシブ」というチェックボックスのように。 メディアマネージャーで画像を選択/置換するときに、カスタムフィールドをattachment_fields_to_edit兄弟フィルターで追加することができましたが、これらのフィールドは画像自体(または、画像添付ポストオブジェクト)にアタッチされます。ページに同じ画像の2つのインスタンスがある場合、それらは私のカスタムフィールドの同じ値を共有します。 a)追加したカスタムテキストフィールド。これをインスタンスにアタッチできません。同じ画像のすべてのインスタンスがこの値を共有します。 b)これは、ここでのすべてが各インスタンスに従っているように見えるため、オプションを追加したい領域です。 c)これは前の画面と同じ表示設定を示していますが、Wordpress 3.9で画像の上にある[鉛筆]をクリックすると、表示が異なります。によって指定されたカスタムオプションattachment_fields_to_editがこの画面にまったく表示されないことに注意してください。 バックボーンのしくみ、またはwp.mediaオブジェクトを変更するためのベストプラクティスについて十分に理解していませんが、php、js、およびgooglingの両方にかなりの能力があります。しかし、これは私に数日間困惑させられたので、どんな助けも大いに感謝されます。 読んでくれてありがとう!

6
どこで、いつ、どのようにして、プラグインのスコープ内で書き換えルールを適切にフラッシュするか?
リライトルールが正しくフラッシュされないという奇妙な問題が発生しています。 私が使って試してみましたflush_rewrite_rules();とflush_rewrite_rules(true);。 私もグローバル化しようとした$wp_rewrite使用$wp_rewrite->flush_rules();と$wp_rewrite->flush_rules(true); どちらも書き換えルールを正しくフラッシュしていないようです。これらの呼び出しは、呼び出されたときに実際に書き換えルールをフラッシュしています。どうすればわかりますか?書き換えルールのフラッシュをデバッグするためのソリューションの使用。 現在、プラグインのアクティブ化と非アクティブ化でフラッシュされた書き換えルールがあります。そこに問題はありません。 ユーザーがプラグインを設定するためのプラグイン管理設定ページがあります。一部の設定はパーマリンク構造を調整するため、プラグイン管理設定ページの[設定を保存]で書き換えルールをフラッシュする必要があります。(標準を使用update_option();)設定を保存します。 指定した設定に応じて、ユーザーが指定した設定と一致するカスタム投稿タイプが作成されることに注意したいと思います。したがって、設定が保存された直後に書き換えルールをフラッシュする必要があります。これは、物事が適切に機能していない場所です。 によって提供された書き換えルールをデバッグするための上記のリンクソリューションは、@toscho大量の書き換えルールをフラッシュしていることを示しています。ただし、カスタム投稿タイプの単一アイテム、さらにはカスタム投稿タイプのアーカイブにアクセスすると、それぞれが404エラーとして返されます。 カスタム投稿タイプが正しく適切に登録されている。それが問題ではないことは確かです。 プラグイン管理ページの設定を保存するとすぐに続きます。カスタム投稿タイプが作成され、パーマリンク構造が調整され、すべての書き換えルールがフラッシュされます。 その後、カスタム投稿タイプは常に読み込まれinit、通常どおりに読み込まれます。 なんらかの理由で、前述のように、カスタム投稿タイプの単一セクションまたはアーカイブセクションにアクセスすると404エラーが返されるため、書き換えルールが適切にフラッシュされません。 奇妙な部分ですが、管理パーマリンク設定ページにアクセスし、フロントエンドに戻ってカスタム投稿タイプの単一セクションまたはアーカイブセクションを表示するだけの場合は、期待どおりに魔法のように機能します。 その管理パーマリンク設定ページは、私が実行していないことで、書き換えルールが適切にフラッシュされ、私のものはそうでないことを可能にしますか? つまり、一時的な解決策として、プラグインの管理設定ページを保存した後、ユーザーを管理パーマリンク設定ページにリダイレクトしていますが、これは理想的な解決策ではありません。私は、プラグインのコード内で適切にフラッシュする書き換えルールを好みます。 WordPressで、書き換えルールをフラッシュしても、すべてのルールがフラッシュされないという点はありますか? admin_menu -プラグイン設定ページがWordPressの管理に追加されました。 add_options_page() -[設定]メニューの下にプラグイン設定ページが追加されました。 設定ページはのコールバックでレンダリングされますadd_options_page()。これは、$_POSTプラグイン設定の更新と書き換えルールのフラッシュのために処理される場所でもあります。 これはすでに長い質問ですので、有効な回答を生成するのに役立つオフサイトリンクにコードブロックを(提供する場合)提供してもかまいません。

3
別のプラグインへのパスを取得する
プラグインへのパスを取得するには、使用できますplugin_dir_path(__FILE__)が、これは明らかにプラグイン内から呼び出す必要があります。 プラグインAからプラグインB()へのパスを確実に取得するにはどうすればよいですpluginb/pluginb.phpか? 編集:想定しているのは、あなたが求めているプラ​​グインのスラッグを知っているということです(実際にはから取得できますget_plugins())。しかし、私はそれが一般的に機能することを望みます。

2
register_activation_hookでactivate_pluginが機能しない理由
最初のプラグインをアクティブにしながら、2番目のプラグインを自動的にアクティブにしようとしています。 register_activation_hook(__FILE__, 'example_activation' ); function example_activation() { include_once(ABSPATH .'/wp-admin/includes/plugin.php'); activate_plugin('hello.php'); } register_activation_hook内では機能しません。次のように直接使用すると、機能します。 include_once(ABSPATH .'/wp-admin/includes/plugin.php'); activate_plugin('hello.php'); どうすれば修正できますか?手伝ってくれてありがとう 解決: 私は今これを自分のために使っています: // When this plugin activate, activate another plugin too. register_activation_hook(__FILE__, function(){ $dependent = 'hello.php'; if( is_plugin_inactive($dependent) ){ add_action('update_option_active_plugins', function($dependent){ /* for some reason, activate_plugin($dependent); is not working */ activate_plugin('hello.php'); }); } }); …

2
WordPressシステム図を探す
WordPressチャート/ダイアグラムシステムのデザインを探しています。 テンプレート階層図だけが見つかりましたが、それはシステムの一部にすぎません。 ソース:http : //upload.wikimedia.org/wikipedia/commons/3/3d/Wordpress_Template_Hierarchy.png

2
WP_Queryが不当な量のメモリをリークしている
以下の関数でWP_Query()を呼び出すたびに、Wordpressは8 MBのメモリをリークします。そして、私はこの関数を頻繁に呼び出すので、物事はかなり速く毛むくじゃらになります... :(結果の$ queryObjectの設定を解除し、定期的にwp_cache_flush()を呼び出そうとしましたが、どちらも効果がないようです。 function get_post_ids_in_taxonomies($taxonomies, &$terms=array()) { $post_ids = array(); $query = gen_query_get_posts_in_taxonomies($taxonomies, $terms); // var_dump($query); //Perform the query $queryObject = new WP_Query($query); //*****THE 8 MEGABYTES IS LEAKED HERE***** //For all posts found... if($queryObject->have_posts()) { while($queryObject->have_posts()) { $queryObject->the_post(); //Get the $post_id by capturing the output of the_ID() ob_start(); the_ID(); …

6
プラグインからページテンプレートリストにオプションを追加するにはどうすればよいですか?
プラグイン内からカスタムページテンプレートを作成する方法を探して、過去数時間を探していましたが、まだ運がありません。 私は特にやるしようとしていると、ページを編集する際に利用可能なページテンプレートのリストにオプションを追加し、あるいないようないくつかの他の方法を使用してif( is_page( 'page-slug' ) ) { /* etc */ } これを行うために変更できるグローバル変数はありますか? 編集: @ m0r7if3rがコメントで私に与えたリンクに基づいて、私は現在このコードを使用していますが、問題は、ページの表示時にこの関数を実行しますが、ページの編集時には実行しません(ドロップダウンリストにページテンプレートを入力するため)。 : class JW_SiteGrader { private static $instance; private function __construct() { add_action( 'template_redirect', array( &$this, 'sitegrader_template_redirect' ), 20 ); } public static function getInstance() { // Return the class data in a Singleton fashion if …

2
WordPress管理セクションで、プラグイン用に作成されたサブメニューページにリンクするにはどうすればよいですか?
だから私はWordPressプラグインを作成しようとしています、そしてこの提供された関数を使用していくつかのメニューページを作成しました: add_submenu_page('my_plugin_menu', 'Edit record page', 'Edit record page', 'manage_options', 'edit_record_page', array(&$this, 'display_edit_record_page'); また、ブラウザのアドレスバーにあるページに移動すると、次のように表示されます。 http://mydomain.com/wp/wp-admin/admin.php?page=edit_record_page 私がしたいことは、このページにリンクできるようにすることですが、より良い方法がないためにリンクをハードコーディングする必要があることがわかり、開発サイトで作業しています。ブラウザーで表示したリンクを動的に生成して、このプラグインコードを運用サーバーにコピーすると機能するようにするにはどうすればよいのかと考えていました。つまり、作成するサブメニューページのリンク部分を生成するWordPress関数があります。 page=edit_record_page また、クエリ文字列をリンクに追加したい場合は、次のように手動で追加するだけです。 http://mydomain.com/wp/wp-admin/admin.php?page=edit_record_page&rec_id=1 それともそれを行うための適切なWordPress関数はありますか?

2
特定の画面オプションとメタボックスを投稿タイプの追加/編集から削除する方法は?
これで、目的の投稿タイプ内で特定の投稿を追加または編集するときに、画面オプションも増えました。ただし、これらの画面オプションはメタボックスを表示/非表示にします。メタボックスのこれらの登録されたすべての画面オプションのリストをプログラムで取得できるようにしたいので、画面オプションの特定の配列が存在するかどうかを再度確認できます。存在する場合は、プログラムでそれらを削除する予定です。 フルサイズのスクリーンショットはこちらをクリックしてください 質問 希望の投稿タイプ内の特定の投稿を追加または編集したい投稿タイプに登録されているすべての画面オプション(メタボックス)のリストをプログラムで取得するにはどうすればよいですか。 最終的に、ここでの目標はこれらのオプションを削除することであり、単に無効にするだけではありません。不要なダッシュボードメタボックスを削除するために、私が達成したことに沿って何かをしたいと考えています。

1
プラグインオプションページの設定APIで複数選択配列を保存するにはどうすればよいですか?
これは、設定APIの使用ではなく、私のPHPの問題のほうが多いと思いますが、Wordpressで複数選択ボックスのデータの配列を保存することができません。 複数選択ボックスはカスタムメタフィールドに対応し、選択オプションはそのメタフィールドを表示するカスタム投稿タイプです。 表示コードは次のとおりです。 case 'select2': echo "<select id='$id' style='width:15em;height:10em;' class='select$field_class' name='" . $buddha_option_name . "[$id]' multiple>"; foreach($choices as $item) { $item = explode("|",$item); $item[0] = esc_html($item[0], 'buddha_textdomain'); $selected = ($options[$id]==$item[1]) ? 'selected="selected"' : ''; echo "<option value='$item[1]' $selected>$item[0]</option>"; } echo "</select>"; echo ($desc != '') ? "<br /><span class='description'>$desc</span>" : …

2
データベースを変更するWordPressプラグインの更新を実装する方法?
独自のデータベーステーブルがいくつかあるWordPressプラグインを開発しています。プラグインは、アクティブ化されるとこれらのテーブルを作成し、削除/アンインストールされると削除します。 プラグインのコードとテーブル構造を更新するプラグインの更新プロセスを実装する必要があります。最も単純なケースは、テーブルの1つに新しい列を追加することです。より複雑なケースは、新しいテーブル構造を作成し、それに応じてコンテンツを更新することです。 この問題をどのように解決することをお勧めしますか?役立つWordPressの組み込み関数はありますか?

3
プラグインのアクティベーション中にメッセージを出力する方法
プラグインを開発していますが、アクティベーションフレーズの間、常にバグに直面しています。ただし、メッセージをエコーすると「予期しない出力」エラーが発生するため、エラーメッセージを表示する簡単な方法はありません。私はadmin_messageフックを試しましたが、機能しません。アクティベーションのある段階が理由で失敗した場合、どのようにユーザーに警告できますか?

5
Gitリポジトリ(github)からWordPressプラグインを更新するにはどうすればよいですか?
複数のサイトにインストールされているプラ​​グインをgithubリポジトリから簡単に更新する方法はありますか?git pullを使用して、各サーバーのコマンドラインから実行できることを知っています。しかし、プラグインが更新される方法と同様に、ワードプレスの管理者からそれを行う方法はありますか?

1
ワードプレスの管理メニューに第3レベルのサブメニューを追加する方法
WordPress管理メニューに3番目のレベルのドロップダウンメニューを追加するために使用できる関数、アクション、またはフィルターはありますか? たとえば、現在サイドバーメニューには投稿用のメニューがあり、投稿の下には投稿の編集、新しい投稿、カテゴリ、タグの追加用のサブメニューがあります。Pagesにも似たようなものがあります。 私がしたいことは、コンテンツというメニュー項目を追加し、コンテンツの投稿、ページ、およびカスタムコンテンツタイプの下に配置し、それらの各エントリの下に関連するサブメニュー(編集、追加など)を配置することです。 私が作成したカスタムプラグインを使用してこれを実行します。問題は、第3レベルのサブメニューを追加する方法に関する情報が見つからないことです。 何か案は? ありがとう。

4
Pタグラッパーなしでthe_excerptをエコーする方法は?
以下のコードスニペットでは、the_excerptをタグなしで書き出そうとしています。ただし、ソース形式は、the_excerptが常にPタグでラップされることを示しています。タグなしで抜粋をプルするにはどうすればよいですか? foreach($myrecentposts as $idxrecent=>$post) { ?> <li class="page_item"> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <?php echo strip_tags(substr( the_excerpt(), 0, 75 ))."..." ?> </li><?php } echo "</ul> </div>";}

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