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
'programing' 카테고리의 다른 글
React Context API - 페이지 새로 고침 시 데이터 유지 (0) | 2023.03.20 |
---|---|
'데코레이터'란 무엇이며 어떻게 사용됩니까? (0) | 2023.03.20 |
가져오기 vs.Ajax Call (0) | 2023.03.20 |
Swift에서의 객체 자동 JSON 시리얼화 및 역직렬화 (0) | 2023.03.20 |
WordPress: enqueue를 사용하여 여러 스크립트 로드 (0) | 2023.03.20 |