programing

js-file Wordpress 내의 php

megabox 2023. 3. 20. 21:46
반응형

js-file Wordpress 내의 php

.js 파일에서 워드프레스 테마의 템플릿 디렉토리를 가져와야 합니다.수익률을 구해야 합니다.<?php bloginfo('template_directory');?>js 파일 내에 있습니다.

아이디어는 다음과 같습니다.

var blogTemplateDir = "<?php bloginfo('template_directory');?>";

어떻게 하면 좋을까요?이를 위한 표준(Wordpress) 방법은 무엇입니까?

Wordpress는wp_localize_script()Wordpress에 PHP 배열을 등록할 때 .js 파일로 전달할 수 있는 함수입니다.

이렇게 동작합니다.

1) wp_register_script()를 사용하여 Wordpress에 스크립트를 등록하고 스크립트에 송신할 파라미터의 배열을 작성합니다.

wp_enqueue_script('my-script','/path/to/script.js');

2) 스크립트에 송신하는 파라미터의 배열을 작성합니다.

$params = array('foo' => 'bar','setting' => 123);

3) wp_localize_script()를 호출하여 파라미터에 고유한 이름을 지정합니다.

wp_localize_script( 'my-script', 'MyScriptParams', $params );

4) JavaScript의 변수는 다음과 같이 접근할 수 있습니다.

<script>
alert(object_name.some_string);
</script>

주의: Wordpress가 JavaScript 파일을 헤더에 포함시키려면 wp_enqueue_script()를 사용해야 합니다.

모든 것을 종합해서

<?php
$myPlugin = new MyPlugin();

//Add some JS to the admin section
add_action('admin_enqueue_scripts', array($myPlugin, 'adminJavaScript'));

class MyPlugin{

        public function adminJavaScript() {

        $settings = array(
            'foo' => 'bar',
            'setting' => 123
        );

        wp_register_script('myJavaScriptName', plugins_url('/myJavaScript.min.js', __FILE__));
        wp_localize_script('myJavaScriptName', 'settings', $settings); //pass any php settings to javascript
        wp_enqueue_script('myJavaScriptName'); //load the JavaScript file
    }
}
?>

<script>
    alert(settings.foo);
</script>

Erik가 이전에 게시한 바와 같이 JavaScript 파일의 파일 확장자는 결국 모든 것이 콘텐츠로 귀결되기 때문에 의미가 없습니다.개발 중에 이 상황이 발생하자 이른바 JavaScript 파일 상단에 다음 사항을 추가해야 한다는 것을 알게 되었습니다.

<?php

   //Let's set the header straight
   header('Content-type: text/javascript');

   //Get the WP-specifics, so that we can use constants and what not
   $home_dir = preg_replace('^wp-content/plugins/[a-z0-9\-/]+^', '', getcwd());
   include($home_dir . 'wp-load.php');
?>

이를 통해 정의를 JavaScript 파일에 확실하게 가져올 수 있으며 위의 예제를 주제와 함께 사용할 수 있습니다(변경만 하면 됩니다)./plugins안으로/themes대신).

javascript 파일의 확장자는 의미가 없습니다.HTML 페이지와 마찬가지로 PHP를 사용하여 javascript 파일을 출력할 수 있습니다.JS 파일을 다음과 같이 포함합니다.

<script src="my_javascript_file.php"></script>

그런 다음 javascript 파일에서 질문의 행을 사용할 수 있습니다.

var blogTemplateDir = "<?php bloginfo('template_directory');?>";

.js를 .php 파일로 랩하여 컨텍스트에 포함합니다.

언급URL : https://stackoverflow.com/questions/6808221/php-within-js-file-wordpress

반응형