내가 본 솔루션은 테마에 자바 스크립트 기능을 추가하는 관점에서 나온 것입니다. 그러나 OP는 구체적으로 "어떻게 정확히 하나의 WordPress 페이지에 합니까?"라고이것은 개별 게시물이 다른 자바 스크립트 기반 "위젯"을 가질 수있는 내 Wordpress 블로그에서 자바 스크립트를 사용하는 방법처럼 들립니다. 예를 들어 게시물은 사용자가 변수 (슬라이더, 체크 박스, 텍스트 입력 필드)를 변경하고 결과를 플로팅하거나 나열하도록 할 수 있습니다.
JavaScript 관점에서 시작 :
- 별도의 ".js"파일에 JavaScript 함수 작성
게시물의 html에 중요한 JavaScript를 포함하는 것을 생각하지 마십시오. 코드로 JavaScript 파일 또는 파일을 만드십시오.
- 게시물의 HTML과 JavaScript 인터페이스
JavaScript 위젯이 html 컨트롤 및 필드와 상호 작용하는 경우 JavaScript에서 해당 요소를 쿼리하고 설정하는 방법과 UI 요소가 JavaScript 함수를 호출하도록하는 방법을 이해해야합니다. 다음은 몇 가지 예입니다. 첫째, JavaScript에서 :
var val = document.getElementById(“AM_Freq_A_3”).value;
그리고 html에서 :
<input type="range" id="AM_Freq_A_3" class="freqSlider" min="0" max="1000" value="0" oninput='sliderChanged_AM_widget(this);'/>
- jQuery를 사용하여 JavaScript 위젯의 초기화 함수 호출
페이지가 준비되면 JavaScript 위젯을 구성하고 그리는 함수 이름을 사용하여 .js 파일에 추가합니다.
jQuery(document).ready(function( $ ) {
your_init_function();
});
- 게시물의 HTML 코드에서 게시물에 필요한 스크립트를로드합니다.
Wordpress 코드 편집기에서 일반적으로 게시물 끝에 스크립트를 지정합니다. 예를 들어, 기본 디렉토리에 스크립트 폴더가 있습니다. 내부에는 일부 게시물이 공유 할 수있는 공통 JavaScript가있는 유틸리티 디렉토리가 있습니다.이 경우에는 제 자신의 수학 유틸리티 함수와 flotr2 플로팅 라이브러리가 있습니다. 예를 들어 미디어 관리자를 사용하는 대신 날짜를 기반으로하는 하위 디렉터리를 사용하여 게시물 별 JavaScript를 다른 디렉터리에 그룹화하는 것이 더 편리하다는 것을 알았습니다.
<script type="text/javascript" src="/scripts/utils/flotr2.min.js"></script>
<script type="text/javascript" src="/scripts/utils/math.min.js"></script>
<script type="text/javascript" src="/scripts/widgets/20161207/FreqRes.js"></script>
- jQuery 대기열에 넣기
Wordpress는 jQuery를 등록하지만 대기열에 넣어 필요하다고 Wordpress에 알리지 않는 한 사용할 수 없습니다. 그렇지 않으면 jQuery 명령이 실패합니다. 많은 소스에서이 명령을 functions.php에 추가하는 방법을 알려 주지만 다른 중요한 세부 사항을 알고 있다고 가정합니다.
첫째, 테마를 편집하는 것은 좋지 않습니다. 향후 테마를 업데이트하면 변경 사항이 지워집니다. 어린이 테마를 만드십시오. 방법은 다음과 같습니다.
https://developer.wordpress.org/themes/advanced-topics/child-themes/
자식의 functions.php 파일은 같은 이름의 부모 테마 파일을 덮어 쓰지 않고 추가합니다. 하위 테마 자습서는 상위 및 하위 style.css 파일을 대기열에 추가하는 방법을 제안합니다. 이 함수에 다른 줄을 추가하여 jQuery를 대기열에 추가 할 수 있습니다. 다음은 하위 테마에 대한 전체 functions.php 파일입니다.
<?php
add_action( 'wp_enqueue_scripts', 'earlevel_scripts_enqueue' );
function earlevel_scripts_enqueue() {
// styles
$parent_style = 'parent-style';
wp_enqueue_style( $parent_style, get_template_directory_uri() . '/style.css' );
wp_enqueue_style( 'child-style',
get_stylesheet_directory_uri() . '/style.css',
array( $parent_style ),
wp_get_theme()->get('Version')
);
// posts with js widgets need jquery
wp_enqueue_script('jquery');
}