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

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

4
特定のWPバージョンが満たされない場合、アクティベーションプロセスでプラグインを停止し、admin_noticesアクションフックにエラーメッセージを表示する
特定のWPバージョン番号を満たしていない場合にアクティブ化したくないプラグインがありますが、admin_noticesアクションフックにエラーメッセージを表示します。私が調査した限りでは、以下のコードは私がこの目標を達成できる最高のものです: $wp_version = get_bloginfo('version'); if ( $wp_version < 4.5 ) { add_action( 'admin_init', 'deactivate_plugin_now' ); add_action( 'admin_notices', 'errormsg' ) ); } public function deactivate_plugin_now() { if ( is_plugin_active('myplugin/myplugin.php') ) { deactivate_plugins('myplugin/myplugin.php'); } } public function errormsg () { $class = 'notice notice-error'; $message = __( 'Error you did not meet …

3
プラグインディレクトリを参照するためのベストプラクティス
私のプラグインは次のコードを使用してファイルを参照しますがWP_PLUGIN_DIR、ユーザーがデフォルトのプラグインフォルダーの名前を変更した場合、読んだことが機能しません。また/location-specific-menu-items/、現在のプラグインフォルダーへの参照に置き換えたいと思います。 $gi = geoip_open(WP_PLUGIN_DIR ."/location-specific-menu-items/GeoIP.dat", GEOIP_STANDARD); WPプラグインディレクトリの名前や特定のプラグインフォルダーの名前に関係なく機能するようにこれを書き換えるにはどうすればよいですか? 編集: これが、皆さんの意見を反映した私の最終的な解決策です。どうもありがとう! $GeoIPv4_file = plugin_dir_path( __FILE__ ) . 'data/GeoIPv4.dat'; $GeoIPv6_file = plugin_dir_path( __FILE__ ) . 'data/GeoIPv6.dat'; if (!filter_var($ip_address, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) === FALSE) { if ( is_readable ( $GeoIPv4_file ) ) { $gi = geoip_open( $GeoIPv4_file, GEOIP_STANDARD ); $user_country = geoip_country_code_by_addr($gi, $ip_address); geoip_close($gi); } …

3
一般的なすべてのPHP / WordPressバージョンの組み合わせをセットアップするための浮浪者スクリプト
プラグインのテスト/デバッグ環境をすばやく繰り返し設定する方法を探しています。おそらくVagrantを使用しています。VVVのようなプロジェクトは単一環境のセットアップ(または、stable / trunkのようないくつかの環境)に焦点を当てていますが、私が探しているのは次のような環境をセットアップするスクリプトです。 wp39-php52.local wp40-php52.local wp41-php52.local wp39-php53.local wp40-php53.local など(あなたはアイデアを得る) そんなことありますか?私が見つけた最も近いものは、少なくともPHPバージョンを実行するWordPress Vagrant Boxesですが、WordPressバージョンをミックスに追加するより完全なものがあるかもしれません。ありがとう。

3
プラグインのアップグレード:ウィジェット設定
私はこれについていくつかの研究を試みましたが、まだ確かなものは何も見つかりませんでした。私が作業しているプラ​​グインがあり、前のバージョンと新しいバージョンの間で、(バックエンドの)設定名の一部を変更するウィジェットにいくつかの更新を行いました。これを行うためのアップグレードルーチンの作成に問題があります。 これまで(ほとんど)機能しているように思われるのは次のとおりです。 $widget = get_option( 'widget_name' ); if( is_array( $widget ) && ! empty( $widget ) ) { foreach( $widget as $a => $b ) { if( ! is_array( $b ) ) { continue; } foreach( $b as $k => $v ) { $widget[$a]['setting1'] = $widget[$a]['oldsetting1']; $widget[$a]['setting2'] = $widget[$a]['oldsetting2']; } …

1
Wordpressプラグインのインストールリストに新しいタブを追加する
ユーザーがWP管理の[プラグインの追加]領域からプラグインを検索するときに、現在のタブの横に新しいページ(ページへのリンク付き)を追加したいと思います。 リンクが必要な場所は、以下のスクリーンショットでマークされています。 http://codex.wordpress.org/Adding_Administration_Menus @で探しましたが、無駄でした。 WPで許可されていますか? 前もって感謝します。

1
メディアURIへのデータURIの保存
(MDN)を使用してPNG画像を生成するTinyMCEプラグインがあります。現在、私はdata-URIを画像タグに入れてバックエンドに表示しているだけですが、これらをWordPress Media Libraryに追加したいのですが。HTMLCanvasElement.toDataURL() 現在base64でエンコードされたデータURIとしてシリアル化されている画像をアップロードする最良の(つまり、VIP準拠)方法は何ですか? これまでの私のアップロード機能は次のとおりです。 <?php /** * AJAX callback that inserts chart as attachment into the WP database */ public static function insert_axis_attachment() { // Get config $axis_config = json_decode( $_POST['axisConfig'] ); if ( ! isset( $_POST['axisJS_nonce'] ) || ! wp_verify_nonce( $_POST['axisJS_nonce'] ) || ! current_user_can( 'upload_files' ) || …

2
muプラグインプラグインで、カスタム投稿タイプのflush_rewrite_rulesを使用する最良の方法は?
(とりわけ)カスタム投稿タイプをインスタンス化するプラグインを書いています。これはマルチサイトプラグインであり、mu-pluginsディレクトリにあります。 この状況でflush_rewrite_rules()を処理するためのベストプラクティスは何ですか?「通常の」プラグインの場合、これはアクティベーションフックで行います。これらのフックは使用できないため、必須のプラグインでは不可能です。 これはカスタム投稿タイプを登録した後の「1回限りの」イベントであるため、CPTを登録するクラスで次のようなことを行うのは理にかなっています。 private function check_flush_my_CPT() { global $wp_rewrite; if ( !get_option('my_plugin_firstrun') ) { $wp_rewrite->init(); $wp_rewrite->flush_rules(true); update_option('my_plugin_firstrun', 'yes'); } } public function register_my_CPT() { // do all the CPT setup steps for the $args array... register_post_type('my_CPT', $args); $this->check_flush_my_CPT(); } add_action( 'init', array(&$this, 'register_my_CPT' ) ); したがって、CPT登録はすべての「init」アクションで発生しますが、この権限がある場合、書き換えルールのフラッシュは1回だけ発生します。 これまで。 私は正しい軌道に乗っていますか? (編集):試してみたところです。私のCPTは404 not …

3
プログラムでユーザーを作成するときにユーザーアクティベーションメールを送信する
ここの誰かが手伝ってくれるのかしら。 基本的に、検証時にユーザーをユーザーテーブルに挿入するカスタム登録フォームを作成しました。 function _new_user($data) { // Separate Data $default_newuser = array( 'user_pass' => wp_hash_password( $data['user_pass']), 'user_login' => $data['user_login'], 'user_email' => $data['user_email'], 'first_name' => $data['first_name'], 'last_name' => $data['last_name'], 'role' => 'pending' ); wp_insert_user($default_newuser); } 今、私がする必要があるのは、次のコードで実行できる確認メールを送信するのではなくです。 wp_new_user_notification($user_id, $data['user_pass']); 代わりにユーザーアクティベーションメールを送信します。いくつか試しましたが、具体的なものを見つけることができないようです。誰かが以前にこの問題を抱えていたことを願っています。

4
ページのthe_title()を動的に変更する
カスタム投稿タイプを使用せず、個別のデータベーステーブルを使用するプラグインを開発しています。これは、ユーザーがコースをサブスクライブできるさまざまなコース詳細ページへのリンクを含むコースのリストを表示するプラグインです。 現在の状態では、ショートコードを使用して、カスタムページテンプレート(page-courses.php)を含むページにプラグインデータを取得しています。 the_title()プラグインが表示するページ(コースのリスト、フォームのあるコース詳細ページ、フォーム送信の成功ページ)に応じて、動的に変更したいと思います。しかし、次のフィルターを使用してそれを行うと、フッター内の他のページへのリンクも変更されます。 <?php add_filter('the_title', 'custom_page_title'); function custom_page_title() { return 'Custom Title'; } 編集する footer.phpにフッターリンクを含む関数があるwp_nav_menu()ので、[外観]> [メニュー]でフッターリンクを定義できます。ただし、上記のフィルターを使用すると、フッター内のすべてのリンクも「カスタムタイトル」に変更されます。しかし、私はページのタイトルを変更したいだけで、フッターのメニューリンクには影響しません。 条件付きタグを追加しようin_the_loop()としても、フッターリンクは影響を受けますが、ループにはありません。 <?php add_action( 'loop_start', 'set_custom_title' ); function set_custom_title() { if ( in_the_loop() ) { add_filter( 'the_title', 'custom_page_title' ); } } function custom_page_title() { return 'Custom Title'; } それはこの質問に似ています:影響を受けるリンクがフッターにあり、機能しないというだけで、navのthe_title問題をフィルタリングしますin_the_loop()。 the_title()表示されている現在のページのタイトルのみに影響を与え、フッターのリンクには影響を与えずに、どのように変更できますか? 編集2-ソリューション だから私は最終的にそれを機能させました: <?php add_action( 'loop_start', …

4
プラグインのネットワークアクティベーションを防止する
現在、ネットワークのアクティブ化をサポートしていないプラグインがあります。もちろん、これに対する最良の修正は、修正することです:)私はそれを計画しています。ただし、その間にネットワークのアクティブ化を防止するために使用できる一時的な解決策、おそらく次のようなワークフローがあるかどうか疑問に思います。 アクティベーションがネットワーク全体であるかどうかを検出する(方法?) 現在サポートされていないというメッセージを表示します。 アクティブ化を中断するか、非アクティブ化します または、他の提案が受け入れられました。ありがとう。 説明のために:マルチサイトのアクティブ化は問題なく、ネットワーク全体のアクティブ化ではありません。

2
wp-content / install.phpはドロップインですか?
ドロップインプラグインの内容と使用方法に関するドキュメントや説明が見つかりません。 このQ&A である「インストール時にコンテンツを取り込む」で質問が出されました。 wp-content/install.phpプラグイン可能な関数を再定義するファイルは、wp_install_defaultsドロップインプラグインですか? 私の研究結果 次のリストは、hakreの記事 (interweb内の他のすべてのコピーの元のようです)からの抜粋です。 File Type of Plugin Loaded Context advanced-cache.php Advanced caching plugin. on WP_CACHE value Single db.php Custom database class always Single db-error.php Custom database error message on error Single install.php Custom install script on install Single maintenance.php Custom maintenance message on maintenance Single object-cache.php …



1
ユーザーに基づいて管理言語を変更する(単一サイト内)
ドイツのクライアントのいくつかのサイトにインストールする小さなプラグインを作成しようとしています。 私はドイツ語でWordPressを回避できますが、英語の方が簡単です。 これを管理するプラグイン(WPネイティブダッシュボード)があり、それは素晴らしいことですが、私が必要とするものに対しては重すぎます。クライアントはこれを必要としません。 無駄にエミュレートしようとしました...の代わりにスワッピングをチェックするデータベースオプションを保存します$current_user。しかし、これが機能するためのロジックがわかりませんでした。 だから、私はtoschoによって与えられたこのソリューションを適応させようとしていますが、WordPressプロセスの正しいポイントでフックを作成していないようです。 問題は、次のコードで欠けている(または混乱している)ビットは何ですか? <?php /* Plugin Name: Set User Locale Plugin URI: https://wordpress.stackexchange.com/q/53326/12615 Description: changes the admin language according to user_login Version: 1.0 Author: wordpress-stackexchange */ class Wpse53326_ChangeLocaleOnDemand { public function __construct() { add_action('admin_init', array(&$this, 'on_init')); add_filter( 'locale', array(&$this, 'on_change_language') ); } public function on_init() { } …

1
テンプレート内でプラグインクラスを使用する
リンクをクリックするとフォームを開く友達に招待状を送信するプラグインを書いています。@toschoによるReport Broken Videoプラグインで指定されたコードに従って、すべての関数をクラスにカプセル化しました。関連するコードは次のとおりです。 /* Plugin Name: Send Invitation Plugin URI: http://w3boutique.net Description: Emails a the link of the current page to a friend Author: Nandakumar Chandrasekhar Version: 0.1 Author URI: http://w3boutique.net/about-nanda.html License: GPL2 */ // include() or require() any necessary files here // Settings and/or Configuration Details go here define('SEND_INVITATION_MIN_WORDPRESS_VERSION', …

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