0

WordPress 用のプラグインを作成しています。プラグインのメイン ファイルで以下のコードを使用すると<head>、js をロードすると正常に動作します。

wp_enqueue_script ( 'custom-script', 'https://cdnjs.cloudflare.com/ajax/libs/bootstrap-v4- rtl/4.6.0-1/js/bootstrap.bundle.min.jsf');

しかし、関数内で使用すると(たとえばshow_form()):

function show_form()
{
wp_enqueue_script ( 'custom-script', 'https://cdnjs.cloudflare.com/ajax/libs/bootstrap-v4- rtl/4.6.0-1/js/bootstrap.bundle.min.js');
require_once 'form.php';
}

ページの下部 ( の前</body>) にスクリプトをロードします。私のコードの何が問題になっていますか? form.php がロードされたときにのみ、
スクリプトをキューに入れる必要があります。<head>form.php でスクリプトを直接ロードできることはわかっていますが、wp_enqueue_script を介してスクリプトをロードする必要があります

4

2 に答える 2

1

が呼び出されたshow_form()時点で、既に実行パスが行き過ぎているため、戻ってコードを head セクションに挿入することはできません。

ロードするすべての JS は、wp_enqueue_scriptsアクションで起動する必要があります。wp_enqueue_script()コードがサイトのヘッドとフッターのどちらに読み込まれるかを判断するために使用できます。

を使用してコードを挿入できるポイントが 2 つありwp_enqueue_script()、それを指定していないにもかかわらずフッターに挿入されている場合は、ヘッド スクリプトが挿入された後にエンキュー スクリプトを呼び出しているためです。

ページの読み込みの早い段階でフォームがページに表示されるかどうかを判断するか、サイト全体でサポートできる方法で JS を使用する必要があります。

例:

function wpse_enqueue_form_scripts() {
    if ( has_form() ) { // EXAMPLE... You need a way of determining this
        wp_enqueue_script( 'custom-script', 'js url...');
    }
}
add_action( 'wp_enqueue_scripts', 'wpse_enqueue_form_scripts' );
于 2021-03-22T22:50:52.013 に答える