web-dev-qa-db-ja.com

Wordpress/WooCommerceクラスを使ってスクリプトを書く?

WooCommerce注文データを変更するために実行したいさまざまな処理スクリプトがあります。現在、私は自分のテーマのfunctions.phpの中の関数としてスクリプトを構築し、それからその関数をショートコードに添付します。次に、そのショートコードだけを含むページをWordpressで作成し、ブラウザにそのページをロードしてスクリプトを実行します。

これは信じられないほど複雑です。これを行うには、ページを作成してテーマを実行することを伴わない「適切な」方法が必要です。

私はWP_QueryやWooCommerce Orderクラスのようなものにアクセスする必要がありますが、基本的に、私がページ/ショートコードを通して物事を実行するときのように、完全なWordpressおよびWooCommerceクラス/関数を利用できるようにしたいです。

すべてのWordpressを簡単にブートストラップするための適切な方法はありますか。

1
ssharp_wp

bootstrapに含まれるすべてのWordpressを簡単に、テーマを最後まで進むことなく適切な方法はありますか?

それは間違った質問です。ショートコードは、テーマまたはプラグインからコードを実行する唯一の方法からfarです。ただし、それらはジョブに不適切であると正しく識別しました。あなたがすべきと思うのは、テーマまたはプラグインからスクリプトを実行するより良い方法を見つけることです。

私の考えでは、主に2つのオプションがあります。基本的には、スクリプトをどのようにトリガーするかによって異なります。

手動でトリガースクリプトを使用する場合は、スクリプトをトリガーするボタンを使用して管理者にページを作成する必要があります。そのための基本的な手順は次のとおりです。

  1. add_menu_page() を使用して、ページを管理者のどこかに追加します。
  2. ページのコンテンツについては、action<?php echo esc_url( admin_url( 'admin-post.php' ) ); ?>に設定したフォームと、name"action"およびvalueを機能の一意の識別子として設定した非表示の入力を使用してフォームを出力します。
  3. スクリプトを実行するフックをadmin_post_{whatever your action name is}に追加します。

このチュートリアル 管理フォームのトピックで詳細を説明しています。

これで、管理画面に移動し、ボタンを押してスクリプトを実行できる場所ができました。

自動トリガースクリプトスケジュールに従ってを実行する場合は、WP Cronを使用してスクリプト関数の実行をスケジュールする必要があります。そのためのドキュメントは here ですが、基本的にはadd_shortcode()を使用してスクリプト関数をショートコードに追加するのではなく、add_action()を使用して関数をフックに追加し、wp_schedule_event()を使用して特定の時間に実行するアクションをスケジュールします。

wp_next_scheduled()を使用して、スクリプトを実行するたびに自動的に再実行するようにスケジュールできます。

if ( ! wp_next_scheduled( '{whatever your hook name is}' ) ) {
    wp_schedule_event( time(), 'hourly', '{whatever your hook name is}', $args );
}
3
Jacob Peattie