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

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

4
投稿の保存/更新時に管理者通知を追加する方法
post_saveを使用してpost-metaからアドレスを取得し、Google APIから緯度/経度の座標を取得する投稿タイプがあります。座標の取得に問題があった場合、ユーザーに通知する方法が必要です。admin_noticesを使用しようとしましたが、何も表示されませんでした。 public static function update_notice() { echo "<div class='error'><p>Failed to retrieve coordinates. Please check key and address.<p></div>"; remove_action('admin_notices', 'update_notice'); } add_action('admin_notices', array('GeoPost', 'update_notice')); 間違って使用しているか、間違ったコンテキストで使用しているかはわかりません。明確にするために、実際のコードでは、add_actionは同じクラスの別の関数にあります。それはうまく機能しています。

1
WordPressがAjaxレスポンスに0(ゼロ)を追加するのはなぜですか?
exit()またはdie()でAjax処理関数を終了しない限り、Ajax関数は必要な正しい出力を受け取りますが、後に続きます0。 なぜそれが起こっているのでしょうか? それはそのようなことを意味するのですか、それとも修正することができますか? add_action('wp_ajax_get_homepage', 'get_homepage'); add_action('wp_ajax_nopriv_get_homepage', 'get_homepage'); function get_homepage(){ echo "get_homepage ->"; exit(); } PluginsのAJAXを読みましたが、なぜそれが必要なのですか?

6
jQueryおよびJavaScriptファイルを正しく含める方法
私は今、次のコードでそれをやっています: function uw_load_scripts() { // De-register the built in jQuery wp_deregister_script('jquery'); // Register the CDN version wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js', array(), null, false); // Load it in your theme wp_enqueue_script( 'jquery' ); } add_action( 'wp_enqueue_scripts', 'uw_load_scripts' ); これは機能しますが、これをすべての人、または管理者以外のすべての人に対して行う必要があります(したがって、バックエンドはWordPressバージョンを使用しますか?): if (function_exists('load_my_scripts')) { function load_my_scripts() { if (!is_admin()) { wp_deregister_script( 'jquery' ); wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js', …

1
プラグインフォーム送信のベストプラクティス
私は多くの研究を行ってきましたが、探しているものが見つからないので、正しい方向に向けられることを望んでいます。 フロントエンドからチケットを予約するイベントプラグインを開発しています。これは、他のどのフォーム送信とも変わりませんが、私が混乱しているのは、OOPを介してクラスで記述されたプラグインからそれを処理する方法です。 私が見つけたほとんどの記事は、テンプレートページ内に$ _POST処理を配置すると述べています。理想的には、これをプラグイン内の関数で処理したいと思います。 私が確信していないもう1つのことは、フロントエンドでフォームを送信するとき、それが実際にバックエンドの関数に渡される方法です。テンプレートの詳細からフォーム処理を完全に抽象化したいと考えています。 // events.php if ( ! class_exists( 'Events' ) ) { Class Events { function __construct() { add_action( 'plugins_loaded', array( &$this, 'includes' ), 1 ); } function includes() { require_once( EVENTS_INCLUDES . 'functions.php' ); } } } if ( class_exists( 'Events' ) ) { $events_load = …

3
私が探す必要がある一般的なセキュリティ上の欠陥は何ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 WPプラグインの開発者として、私が探すべき主なセキュリティ上の欠陥/穴は何ですか? 構成パネル(入力フィールドなど)で新しいプラグインを作成しようとしています。何を心配する必要がありますか? たとえば、/ wp-admin /領域にあるため、データのサニタイズは非常に重要ですか?悪意のある人がプラグインページに直接アクセスして、POSTリクエストなどを送信できますか? ありがとうございました!

3
リダイレクトを含むアクションを追加するには、どのフックを使用する必要がありますか?
同じページの新しいクエリ文字列を構築するために、クエリ文字列から特定のURLパラメータを取得するプラグインを構築したいと思います。Professional WordPressプラグイン開発の優れた本をフォローしていますが、このアクションにどのフックを使用すべきかわかりません。ここに私のアクション関数があります: add_action( 'init', 'tccl_redirect' ); function tccl_redirect() { header ( "Location: http://www.mysite.com/$mypage?$newparam=$newvalue" ); ?> どのフックがヘッダーのリダイレクトに適していますか?

4
プラグインフォルダーに空のindex.phpファイルを含める必要がありますか?
WordPress自体のwp-contentフォルダーには、次のような空のPHPファイルが含まれています。 <?php // Silence is golden. ?> ディレクトリの内容を見ている人の表示を停止するために、プラグインにはこのような空のファイルも含める必要がありますか?テーマ内の追加のフォルダはどうincludesですか?ディレクトリのようなものですか?

3
なぜ `wp_options`テーブルには` autoload`のインデックスがありませんか?
WordPressが提供する各ページの先頭には、オプションを取得するMySQL呼び出しがあります。 SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'; autoload列にはインデックスがないため、MySQLはすべての行を検索する必要があります。 また、この回答のコメントには、インデックスがあってもパフォーマンスは向上しないというコメントがありました。 私のアプリケーションでは、多くの一時的な値を使用して、セッションの代替として機能しました。それらは素晴らしく機能し、私には独自のガベージコレクションルーチンがあります。wp_options表では、一時的な値(で始まる値_transient_)がすべてになっていることに気付きましたautoload=no。wp_options同時ユーザーの数が増えると、テーブルの行数が増えると思います。 テーブルがこのように設計されている理由を知りたい。また、特定のケースのインデックスを作成する必要がありますか?

1
多次元配列に格納された更新オプション
wp_options現在、多次元配列(profile_element_order)として保存されているテーブルにデータがあります。 a:12:{s:17:"img_base64_enable";s:1:"1";s:25:"moulding_combination_page";s:0:"";s:24:"moulding_collection_page";s:0:"";s:25:"idea_gallery_thumb_height";s:3:"200";s:24:"idea_gallery_thumb_width";s:3:"200";s:23:"collection_thumb_height";s:3:"200";s:22:"collection_thumb_width";s:3:"200";s:20:"profile_item_columns";s:1:"4";s:17:"idea_item_columns";s:1:"2";s:24:"collections_item_columns";s:1:"2";s:25:"combinations_item_columns";s:1:"4";s:21:"profile_element_order";a:5:{i:0;s:8:"Option 1";i:1;s:8:"Option 2";i:2;s:8:"Option 3";i:3;s:8:"Option 4";i:4;s:8:"Option 5";}} 私が達成しようとしているのは、profile_element_orderオプションを更新することです(それらのオプション内で)。これまでのところ、すべてがどのように見えるかです: function psort_save_order() { global $mouldings_options; $list = $mouldings_options['profile_element_order']; $new_order = $_POST['list_items']; $new_list = array(); // update order foreach($new_order as $v) { if(isset($list[$v])) { $new_list[$v] = $list[$v]; } } // save the new order update_option('profile_element_order', $new_list); die(); } add_action('wp_ajax_psort_update_order', 'psort_save_order'); データはDBテーブルに正しく投稿されています(失敗した試行の一部がのような新しいオプションエントリとして表示されるためmouldings_settings->profile_element_order)- update_option()特定のオプションだけの構文を理解するのに苦労しています。私は次のようなことを試しました( `mouldings_settingsが実際のオプション名であることを念頭に置いてください): …

10
WordPressプラグイン開発-ヘッダー送信済みメッセージ
WordPressプラグインを開発しています。プラグインをアクティブにすると、次のメッセージが表示されます。 プラグインは、アクティベーション中に予期しない出力の293文字を生成しました。「ヘッダーは既に送信されています」というメッセージ、シンジケーションフィードの問題、またはその他の問題に気づいた場合は、このプラグインを無効にするか削除してみてください。 プラグインは非常にうまく機能していますが、なぜこのメッセージが表示されるのかわかりません。私のプラグインは:http : //wordpress.org/extend/plugins/facebook-send-like-button/

2
WP_CONTENT_DIRおよびWP_PLUGIN_DIRの代わりに何を使用する必要がありますか?
プラグインおよびコンテンツディレクトリの決定に関するWordPressのドキュメントには、次のことが記載されています。 WordPressは、コンテンツおよびプラグインのディレクトリへのパスを決定するときに、次の定数を使用します。これらはプラグインやテーマによって直接使用されるべきではありませんが、完全性のためにここにリストされています。 これは、テーマとプラグインの開発者が使用すべきでない定数のリストでWP_CONTENT_DIRありWP_PLUGIN_DIR、おそらく次の理由によります。 WordPressでは、ユーザーがwp-contentディレクトリを好きな場所に配置できるため、プラグインがwp-content / pluginsにあるとか、アップロードがwp-content / uploadsにあるとか、テーマがwp-コンテンツ/テーマ。 Mark Jaquithは、これらの定数を使用すべきではないとコメントしています。 WP_PLUGIN_URLまたはWP_PLUGIN_DIRを使用しないでください。プラグインはプラグインディレクトリにない場合があります。 だから、これらの定数を使用せずにプラグイン、wp-content、およびthemesフォルダへのフルパスを参照する受け入れられた方法は何ですか? 簡単な例として、インストールされているすべてのプラグインのフルパスを出力するには、次のようにします。 <?php $plugins = get_plugins(); foreach ($plugins as $file => $details) { echo WP_PLUGIN_DIR . '/' . $file . '<br>'; } 次のようなリストが生成されます。 /var/www/wp-content/plugins/akismet/akismet.php /var/www/wp-content/plugins/debug-bar/debug-bar.php /var/www/wp-content/plugins/hello.php (たとえば、ユーザーがサイトのバックアップの一部としてプラグインを選択的にアーカイブできるようにするプラグインを作成している場合、これを行いたい場合があります。) 使用WP_PLUGIN_DIRが間違っている場合、推奨される代替案は何ですか?wp_upload_dir()私が見つけることができるプラグイン、テーマ、およびwp-contentフォルダーに相当するものはありません。


5
dbDeltaがテーブルを作成していません
私は多くのスレッド、コーデックスページを通過し、多くのものをいじりましたが、私のコードはテーブルを作成していないようです。そして、私はどこが間違っているのか理解できません。データベースでbooking_db_versionをチェックしましたが、ファイルで更新すると更新されます。 ここにコードがあります global $booking_db_version; $booking_db_version = "1.0.0"; function booking_install() { global $wpdb; global $booking_db_version; global $tableprefix; $installed_version = get_option('booking_db_option'); $tableprefix = $wpdb->prefix . 'booking_'; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); if ( $installed_version !== $booking_db_version ) { /* Create table for packages */ $packagetable = $tableprefix . 'packages'; $sql = "create table $packagetable …

4
wordpress wp-includesフォルダーは何のためですか?
wordpress wp-includesフォルダーは何のためですか?つまり、その基本的なアーキテクチャ上の目的は何ですか、たとえば、なぜすべてがテーマや管理フォルダにないのですか? プラグイン開発者はそのコンテンツ(jQueryなど)をどのくらいの期間使用できますか? また、WordPressの変更に伴い、誰が何を決定し、どのように維持するかを決定したいのですが、このすべてがポリシードキュメントとしてどこかに文書化されていますか?

1
WP 3.3メニューバーを管理バーに追加する方法
Yoast SEOプラグインをインストールしましたが、プラグインがアクティブになったら管理バーに新しいフライアウトメニューが追加されたことに気付きました。 誰もがこれがどのように行われるかについてのチュートリアルまたは例があることを知っていますか?

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