Jak przekazać zmienne PHP do JavaScript w WordPress

Internet 2021-09-29 20:25:54 3 7,501

Kiedy tworzysz motyw WordPress lub wtyczkę, czasami masz kod JavaScript, który musi używać danych/wartości z PHP. Na przykład potrzebujesz tych wartości w kodzie JavaScript :

    Homepage URL
    Theme option values
    WordPress posts data
    etc

Najłatwiej to zrobić, inicjując te wartości w obiektach JavaScript w pliku motywu header.php lub haczyku wp_head. Na przykład :

<script>
var myThemeParams = {
   homeURL: <?php echo home_url(); ?>,
   themeOptions: <?php echo get_theme_mod( 'mytheme_options', false ); ?>,
}
</script>

Mimo, że to działa, WordPress dostarczył nam funkcję do robienia czegoś takiego. Nazywa się wp_add_inline_script.

wp_add_inline_script( $handle, $data, $position = 'after' )
    $handle : Nazwa skryptu, do którego ma zostać dodany skrypt wbudowany.

    $data : Ciąg zawierający dodany JavaScript.

    $position : Określa, czy dodać skrypt inline przed uchwytem, ​​czy po.

Ta funkcja doda wbudowany skrypt przed lub po kodzie JavaScript. W rzeczywistości może zrobić więcej poza przekazywaniem zmiennych PHP do JavaScript. Tutaj możesz zobaczyć inny przypadek użycia.

Tak więc, aby użyć wp_add_inline_script do przekazywania zmiennych z PHP do JavaScript, musisz ustawić właściwości position na before, tak aby skrypt inline został dodany przed twoim plikiem JS. A następnie zainicjuj obiekt JavaScript i ustaw wartość danymi z PHP.

$myThemeParams = array(
    'homeURL' => home_url(),
    'themeOptions' => get_theme_mod( 'mytheme_options', false )
);
wp_enqueue_script( 'my-theme-script', get_template_directory_uri() . '/js/script.js' );
wp_add_inline_script( 'my-theme-script', 'var myThemeParams = ' . wp_json_encode( $myThemeParams ), 'before' );

W swoim JavaScript możesz uzyskać do niego dostęp w ten sposób:

console.log( myThemeParams.homeURL );
console.log( myThemeParams.themeOptions );

#WordPress#


Państwa uwagi

Already have 3 Article answer
  • forex 1楼
    Hi would you mind letting me know which hosting company you're working with? I've loaded your blog in 3 completely different web browsers and I must say this blog loads a lot faster then most. Can you recommend a good web hosting provider at a fair price? Thank you, I appreciate it!
    发布于 2022/03/17 09:11
  • free freaky porno 2楼
    Hi, all is going fine here and ofcourse every one is sharing data, that's in fact good, keep up writing.
    发布于 2022/03/11 07:16
  • cara buat robot forex sederhana 3楼
    Hello, all is going well here and ofcourse every one is sharing facts, that's in fact good, keep up writing.
    发布于 2022/02/03 21:59