วิธีแก้ปัญหาที่ฉันเห็นมาจากมุมมองของการเพิ่มคุณสมบัติจาวาสคริปต์ให้กับธีม อย่างไรก็ตาม OP ถามโดยเฉพาะว่า "ฉันจะเพิ่มลงในหน้า WordPress หนึ่ง ๆได้อย่างไร" ดูเหมือนว่าฉันจะใช้ javascript ในบล็อก Wordpress ของฉันซึ่งแต่ละโพสต์อาจมี "วิดเจ็ต" ที่ขับเคลื่อนด้วยจาวาสคริปต์ที่แตกต่างกัน ตัวอย่างเช่นโพสต์อาจให้ผู้ใช้เปลี่ยนตัวแปร (ตัวเลื่อนช่องทำเครื่องหมายช่องป้อนข้อความ) และลงจุดหรือแสดงรายการผลลัพธ์
เริ่มจากมุมมองของ JavaScript:
- เขียนฟังก์ชัน JavaScript ของคุณในไฟล์“ .js” แยกต่างหาก
อย่าคิดที่จะรวม JavaScript ที่สำคัญไว้ใน html ของโพสต์ของคุณ - สร้างไฟล์ JavaScript หรือไฟล์ด้วยโค้ดของคุณ
- เชื่อมต่อ JavaScript ของคุณกับ html ของโพสต์ของคุณ
หากวิดเจ็ต 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 ของคุณ
เพิ่มสิ่งนี้ลงในไฟล์. js ของคุณโดยใช้ชื่อฟังก์ชันของคุณที่กำหนดค่าและวาดวิดเจ็ต JavaScript ของคุณเมื่อเพจพร้อมสำหรับมัน:
jQuery(document).ready(function( $ ) {
your_init_function();
});
- ในโค้ด html ของโพสต์ของคุณให้โหลดสคริปต์ที่จำเป็นสำหรับโพสต์ของคุณ
ในโปรแกรมแก้ไขโค้ด Wordpress ฉันมักจะระบุสคริปต์ที่ท้ายโพสต์ ตัวอย่างเช่นฉันมีโฟลเดอร์สคริปต์ในไดเร็กทอรีหลักของฉัน ข้างในฉันมีไดเร็กทอรียูทิลิตี้ที่มี JavaScript ทั่วไปซึ่งบางโพสต์ของฉันอาจแชร์ - ในกรณีนี้ฟังก์ชันยูทิลิตีคณิตศาสตร์ของฉันเองและไลบรารีการลงจุด flotr2 ฉันพบว่าสะดวกกว่าในการจัดกลุ่ม JavaScript ที่โพสต์เฉพาะไว้ในไดเร็กทอรีอื่นโดยมีไดเร็กทอรีย่อยตามวันที่แทนที่จะใช้ Media Manager เป็นต้น
<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');
}