Czy możemy w jakiś sposób użyć wp_localize_script () do tworzenia globalnych zmiennych js bez określonego uchwytu skryptu, do którego można uzyskać dostęp ze wszystkich plików js, nawet jeśli skrypty js nie są poprawnie kolejkowane przy użyciu wp_enqueue_script?
Korzystam z tego kodu, który tworzy zmienną dla uchwytu „ajaxscript”, więc nie mogę uzyskać dostępu do obiektu „ajaxobject” w pliku js, który jest zawarty w pliku header.php bezpośrednio przez <script src="xxx" .... />
wp_register_script( 'ajaxscript', get_bloginfo( 'template_url' ) . '/js/ajaxscript.js', array(), $version );
wp_enqueue_script( 'ajaxscript' );
wp_localize_script( 'ajaxscript', 'ajaxobject',
array(
'ajaxurl' => admin_url( 'admin-ajax.php' ),
'ajaxnonce' => wp_create_nonce( 'itr_ajax_nonce' )
)
);
wp-enqueue-script
wp-localize-script
Subharanjan
źródło
źródło
wp_localize_script
dzieje. W przypadku obu metod zmienne są dostępne z dowolnego skryptuOdpowiedzi:
W takim przypadku zamiast używać wp_localize_script, możesz podpiąć swoje zmienne js na wp_head, w ten sposób byłoby ono dostępne dla wszystkich plików js, takich jak:
Ponadto, jak sugeruje @Weston Ruter, możesz json zakodować zmienne:
źródło
json_encode
tutaj, na przykład:var ajaxurl = <?php echo json_encode( admin_url( "admin-ajax.php" ) ); ?>;
Możesz eksportować dowolne dane, które chcesz przechwycić
wp_head
, jak pokazują powyższe odpowiedzi. Należy jednak użyćjson_encode
do przygotowania danych PHP do eksportu do JS zamiast prób osadzenia surowych wartości w literałach JS:Użycie
json_encode
ułatwia sobie i zapobiega przypadkowym błędom składni, jeśli łańcuch zawiera znaki cudzysłowu. Co jeszcze ważniejsze, przy użyciujson_encode
Thwarts XSS.źródło
Skończyło się na tym. Teraz działa !! Dzięki @ dot1
źródło
json_encode
zamiast ręcznie tworzyć JSON.json_encode
teraz :) Dzięki @WestonRuter !!Chociaż nie jest to moja najlepsza praca, jest to kolejny prosty sposób na uzyskanie danych w odpowiedzi:
Dodaj niektóre dane JS do kontekstu okna:
Będzie to działać zarówno dla skryptów nagłówka, jak i skryptów stopki i nie będzie się powtarzać.
źródło