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

WordPressコア全体の特定のポイントで実行されるイベントの名前。

1
add_role()は1回だけ実行されますか?
add_role()がデータベースを変更し、ロールが既に存在する場合に失敗することを発見して驚きました。ここには2つの意味があります。1つ目はもう1つより深刻です:1)add_roleコードを開発して更新している場合は、最初にremove_role()を実行する必要があります再び。 そのため、通常はadd_role()をwp_loadedアクションフック内に入れています。また、開発中なので、add_roleの前にremove_role()を追加したため、キャップのリストを変更した場合に実際に有効になることを確認できます。 しかし明らかに、これはブログのページがアクセスされるたびに実行されています。さて、管理者のみのアクションに入れることも、このロールを1回作成できるユーザーまたはツールの下にプラグインページを作成することもできます。もっとシンプルでエレガントなソリューションが出ることを期待していると思います。 run_onceのようなアクションがあるとは思いませんか? または、ロールを追加してからadd_cap()を何回も使用するだけのベストプラクティスですか?そして、それでもadd_capがdbにアクセスしていると思います。 不要なdbアクセスを減らすための最良の方法について考えてみてください。あなたのベストプラクティスは何ですか?

5
after_setup_themeは常に実行されます
一部の教員向けに子テーマを設定しています。テーマの一部として、テーマがアクティブ化されたときにいくつかのプラグインをアクティブ化してください。したがって、当然のことながら、私はafter_setup_themeアクションを使用して、セットアップ関数を呼び出しました。EVERYリクエスト(管理者など)で実行されることを除いて、それは素晴らしい働きをします。これをセットアップ関数の最後に追加することでこれを証明しました: echo '<script type="text/javascript">alert("This action was run")</script>'; そしてその結果、すべての管理リクエストとすべてのフロントエンドリクエストでJavaScriptアラートを取得します(私はネットワークを設定しているので、このテーマがアクティブでないサイトでは明らかに機能を実行していません)。 だから問題は、これはバグですか?どういうわけか私は何か間違ったことをしていますか?これが私が使用している完全なコードです: add_action( 'after_setup_theme', 'fwp_setup' ); function fwp_setup(){ // -- Unrelated code remove for the sake of brevity require_once($_SERVER['DOCUMENT_ROOT'].'/wp-admin/includes/plugin.php'); activate_plugin('enable-media-replace/enable-media-replace.php'); activate_plugin('seo-image/seo-friendly-images.php'); activate_plugin('w3-total-cache/w3-total-cache.php'); echo '<script type="text/javascript">alert("This action was run")</script>'; } どんな洞察もいただければ幸いです!

4
投稿を公開する前にカスタムフィールドを検証するためのアクションフィルター/フックはありますか?
というカスタムファイルがありxxxx_urlます。xxxx_url一意である必要があります。 それで、投稿を公開する前に、それxxxx_urlが一意であるかどうかを確認したいと思いますか?一意でない場合は、投稿の公開を拒否する必要があります。 試しましたpublish_post。しかし、それは私たちが投稿を公開するときにトリガーされるので、それは正しいものではありません。公開の直前にコードを実行したい。

2
子の親テーマアクションを削除します
Storefrontから子テーマを作成しています。 今、私はこれらのアクションを子テーマから削除したいと思います add_action( 'woocommerce_before_shop_loop','storefront_sorting_wrapper',9 ); この関数によって: add_action( 'after_setup_theme','remove_action', 100 ); function remove_action() { remove_action( 'init', 'woocommerce_before_shop_loop'); } しかし、それは動作しません!

3
匿名関数を介して追加されたアクション/フィルターを削除する
それは私が言わなければならないひどく悪い習慣です。匿名機能を介して追加されたアクションとフィルターを削除するソリューションを見つけるために、過去2時間を費やしました。 これは、親テーマで使用されるコードであり、削除する必要があります。 /** * Add custom columns to admin comments grid * * Rate that user set. */ add_filter( 'manage_edit-comments_columns', function( $default ) { $columns['smr_comment_rate'] = __( 'Rate', 'txtdmn' ); return array_slice( $default, 0, 3, true ) + $columns + array_slice( $default, 2, NULL, true ); }); toschoの答えを得た、それでひどく遊んだ、しかし助けはなかった。それで、匿名関数を介して追加されたアクション/フィルターを削除する他の選択肢はありますか? ありがとう

1
jQueryを使用してwp_optionsに保存されているデータを削除する
私の問題について誰かが私にさらに助言してくれるだろうか。私のプラグインの一部は、デバッグ目的でログファイルを保存します。jqueryとwp_localise_scriptを使用して、管理ページの(div#log)に正常に表示しました。これらのログを削除するボタンがありますが、これを処理する方法がわかりません。ここではajaxが役に立つかもしれないと感じていますが、どこから始めればよいかわかりません。 これが私のコードの関連部分です: admin_enqueue_scripts(アクション) $args = array(get_option('wow_tweets_log'));//log files fetched from wp_options table wp_enqueue_script('wow_tweet');//registered earlier on with jQuery dependency wp_localize_script('wow_tweet', 'wow_vars', $args); 管理ページ <tr><th scope="row"><strong>Debugging</strong></th><td> <div id="debug" class="button-primary">Debug</div><!--debug button shows logs--> <div id="hide_debug" class="button-secondary">Hide</div><!--debug button hides logs--> <div id="clear_log" class="button-secondary">Empty Log</div><!--Press to delete logs--> </td></tr> <tr><th scope="row"></th><td><div id="log"><!--Logs show here--></div></td></tr> Javascript jQuery(document).ready(function() …
10 jquery  ajax  actions  options 

2
add_action( 'init')とadd_action( 'wp_enqueue_scripts')を使用する場合
私のテーマのfunctions.phpでは、jqueryが読み込まれる場所を制御するためにadd_actionを呼び出しています(テーマの他のスクリプトと共にフッターにあります)。 私が抱えている問題は、add_action( 'wp_enqueue_scripts')を使用すると、プラグインがロードされていない場合にのみ起動するように見えることです。ただし、add_action( 'init')メソッドはすべてのケースで機能します。 理由は思い出せませんが、この場合はadd_action( 'wp_enqueue_scripts')をお勧めします。それが本当である場合、どのようにしてすべての場合に機能させることができますか? functions.php内 //if(!is_admin()){add_action('init', 'my_theme_init');} //THIS WORKS ALL THE TIME //add_action('wp_enqueue_scripts', 'my_theme_init'); //THIS ONLY WORKS WHEN NO PLUGINS PRESENT if(!is_admin()) { require_once(TEMPLATEPATH . '/functions_public.php'); } functions_public.php内 function my_theme_init() { /* PREVENT DUPLICATE COPIES OF JQUERY FROM PLUGINS **************************************************/ wp_deregister_script('jquery'); /* LOAD THE LOCAL WORDPRESS COPY OF …

2
do_actionと戻り値の取得方法は?
したがって、次のシナリオがあります。 データベースからログを削除するアクションを追加します。 add_action( 'myplugin_clean_logs', array( 'MyPlugin_Logs', 'clean_logs' ) ); 今、私はこのアクションを定期的に実行したいと思います: wp_schedule_event( current_time( 'timestamp' ), 'daily', 'myplugin_clean_logs' ); そしてそれを手動で実行します: do_action( 'myplugin_clean_logs' ); このメソッドMyPlugin_Logs::clean_logsは影響を受けた行の数を返すか、何かが他の方向に進んだ場合はfalseを返します。 次に、削除された行の数を表示します。私はこのようなものを想像します: $affected_rows = do_action( 'myplugin_clean_logs' ); echo $affected_rows . ' entries have been deleted.'; しかし、do_action値を返さないので、戻り値を取得する方法がわかりません。 手動実行でメソッドを直接実行する必要がありますが、スケジュールイベントのアクションを使用する必要がありますか?
10 actions 

1
wp_headers vs send_headers。それぞれをいつ使用するのですか?
私はこれまでに同じものに使用したことがありますがwp_headers、send_headersどちらを使用するか、いつ使用するかを知るにはどうすればよいでしょうか。 上のsend_headersコーデックス・ページの追加の例がありますX-UA-Compatible: IE=edge,chrome=1メタタグは、多くの場合、以降のInternet Explorer下位互換性のために遅すぎるロードされた場合、イントラネットサイトに障害が発生しました。 これは何であるsend_headers例は次のようになります。 add_action( 'send_headers', 'add_header_xua' ); function add_header_xua() { header( 'X-UA-Compatible: IE=edge,chrome=1' ); } しかし、wp_headersこれも行うことができます: apply_filters ( 'wp_headers', array $headers, WP $this ) add_filter( 'wp_headers', 'wpieeam_headers' ); function wpieeam_headers($headers) { if (!is_admin()) { $headers['X-UA-Compatible'] = 'IE=edge,chrome=1'; } return $headers; } 更新:私は実際に、これに関する多かれ少なかれ会話が数年前に同様の質問で始まったことに気づきました... また、send_headersはフロントエンドのみと関係がありますか?wp_headersが次のようなチェックを行うのを見てきました。 if ( isset($_SERVER['HTTP_USER_AGENT']) && (strpos($_SERVER['HTTP_USER_AGENT'], …

2
役割と機能を追加するときに、どのアクションにフックする必要がありますか?
add_role()と$ role-> add_cap()を使用して、新しいカスタムロールを設定し、既存のロールに新しい機能をアタッチします。 これを行うのに最適な場所はどこですか?もちろん、functions.php内で直接実行でき、それで処理を完了できます。しかし、これはベストプラクティスですか?これを行う必要があるのはadmin_initだけですか?または私はinitでそれをすべきですか? functions.php内に直接の関数呼び出しを単にドロップするのではなく、initアクションフックの使用に関するベストプラクティスが何であるかは完全にはわかりません。 あなたの入力をありがとう!

3
投稿がゴミ箱に移動したときに実行する関数。
こんにちは投稿がゴミ箱に移動されている間に実行できるアクションがあります.... delete_postとdeleted_postを試しました。それは機能しますが、各アクションに対して2回(codexで記述されたアクションの前後に)、投稿がゴミ箱から削除された場合にのみ出力が表示されます。例何らかの理由で投稿がゴミ箱に移動したことを示すメールを作者に送信し、user_metaを更新したいとします。私が使うなら add_action('deleted_post', 'emailUser'); または add_action('delete_post', 'emailUser'); 投稿がゴミ箱から削除された場合にのみ機能します。。。 更新:ゴミ箱の投稿を使用して機能させる add_action('trash_post', 'emailUser'); しかし、関数の二重実行の問題はまだ残っています。。。

10
外部クラスからアクションを削除する
私はこの質問に似た何かをしようとしています:remove_actionまたはremove_filter with external classes? 削除しようとしています <!-- This site is optimized with the Yoast WordPress SEO plugin v1.0.3 - http;//yoast.com/wordpress/seo/ --> プラグインからのメッセージ。 そして、これが非倫理的であるかもしれないことについてあなたが私に怒鳴る前に、著者はここでそれをするのは大丈夫だと言います:http : //wordpress.org/support/topic/plugin-wordpress-seo-by-yoast-how-to-remove-dangerous -inserted-yoast-message-in-page-headers?replies = 29#post-2503475 ここにコメントを追加するクラスを見つけました:http : //plugins.svn.wordpress.org/wordpress-seo/tags/1.2.8.7/frontend/class-frontend.php 基本的にはWPSEO_Frontendクラスが名前の関数があるdebug_markerその後、名前の関数によって呼び出されhead、その後に追加されたwp_head中に__Construct クラスは初めてですが、頭を完全に取り除く方法を見つけました global $wpseo_front; remove_action( 'wp_head', array($wpseo_front,'head'), 1, 1 ); debug_markerパーツを取り除きたいだけです。私はこれを試しましたが、うまくいきません remove_action( 'wp_head', array($wpseo_front,'head','debug_marker'), 1, 1 ); 私が言ったように、私はクラスが初めてなので、どんな助けも素晴らしいでしょう。

1
これらのフックの仕組みを説明してください
私はフックとアクションについて読みました、そしてdo_action('some_hook')それを見たとき、どこかにadd_action('some_hook', function() {...});または機能some_hook()がテーマのに存在することを意味することを知っていfunctions.phpます。 しかし、それは何ですか?!: woocommerce /含ん/クラス-WC-checkout.phpのライン#943: public function process_checkout() { try { ///////////// do_action( 'woocommerce_before_checkout_process' ); <----!!! if ( WC()->cart->is_empty() ) { throw new Exception( sprintf( __( 'Sorry, your session has expired. <a href="%s" class="wc-backward">Return to shop</a>', 'woocommerce' ), esc_url( wc_get_page_permalink( 'shop' ) ) ) ); } do_action( 'woocommerce_checkout_process' ); …
8 hooks  actions 

1
設定ボタンが押されたときにカスタムアクションをトリガーする
これは私の最初のワードプレスプラグインであり、動作させるのに多くの問題を抱えています。ほぼ問題なく動作しますが、この特定のことを実行する方法が見つかりません。 基本的に私はプラグイン用のカスタム設定ページを持っています、それはまったく問題なくすべてを保存しますが、問題は、(同じ設定ページ内の)他のボタン(この場合は同期アクション)をトリガーする方法を教えてください。 プラグインを構成した後、テーブルのレコードを作成/更新する別のアクションをトリガーしますが、初めてワードプレスの古い投稿からレコードを作成/更新するために同期を実行する必要があるためです。 編集: wsd-parse-apiのプラグインソースコード。

2
$ post / $ postsを確実に取得するための最も早いフック
$post/$postsフロントエンドとバックエンドの両方でグローバル変数にアクセスできる場所にフックできる最も早い可能なアクションは何ですか?私はコーデックスのリファレンス、アダム・ブラウンのリファレンスを調べて、ソースを何回か読み飛ばしてみましたが、良いものを見つけるのにあまり運がありませんでした。 pre_get_posts早すぎます。posts_selectionコールバック中に2回目のget_posts()呼び出しを行う場合、を使用しても機能しません。そしてtemplate_redirect管理者側では動作しません。フロントエンドthe_postよりも早い場合template_redirectがありますが、バックエンドでは実行されません。理想的にget_post()/get_posts()は、返品の直前に実行されるものが欲しいのですが、そのようなものは見ていません。 the_posts過去にこのフィルタを使用したことがありますが、より技術的に正しいので、アクションを使用します。 現在、私は2回フックしているだけです。一度template_redirectフロントエンドに使用admin_xml_nsし、再びバックエンドに使用します。ただし、私のロジックはこれらのフックのいずれにも意味的に関連していないため、私はあまり好きではありません。これは非常に一般的な必要性であり、機能する「post_get_posts」(ala pre_get_posts)のようなフックがあるはずです。両側に。

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