วิธีที่มีประสิทธิภาพมากที่สุดในการเพิ่มไฟล์จาวาสคริปต์ในโพสต์และ / หรือหน้าเฉพาะ


17

ฉันสงสัยว่าวิธีที่มีประสิทธิภาพที่สุดคือการเพิ่มไฟล์จาวาสคริปต์เฉพาะสำหรับโพสต์และ / หรือหน้า

ต่อไปนี้เป็นคำตอบบางส่วนที่ฉันได้รับ:

  • เปลี่ยนเป็นมุมมองการแก้ไข HTML และโพสต์ JavaScript ของคุณในนั้น (โซลูชันที่ไม่ดีพอ)
  • ฟิลด์ที่กำหนดเองพร้อม JavaScript เฉพาะสำหรับโพสต์ / เพจนั้นในคู่ของคีย์ & ค่า
  • ใน footer.php โหลดไฟล์ JavaScript ขึ้นอยู่กับว่าคุณอยู่ในหน้าไหน (สิ่งนี้นำไปสู่เงื่อนไขมากมาย)

ในบันทึกด้านข้างไม่มีไฟล์ JavaScript ใดที่จะถูกแชร์ระหว่างหน้า - มันจะเจาะจงเฉพาะกับสิ่งที่คุณกำลังดูอยู่

ความคิดใด ๆ


กล่อง Meta / ฟิลด์ที่กำหนดเองเป็นตัวเลือกที่ดีที่สุดของคุณ
Miha Rekar

คุณจะกำหนดประสิทธิภาพอย่างไร
fuxia

1
ด้วย 'ประสิทธิภาพ' ฉันหมายถึงจำนวนโค้ดซ้ำซ้อนน้อยที่สุดและวิธีที่มีประสิทธิภาพที่สุดในการดำเนินการนี้โดยเฉพาะสำหรับการโพสต์ / หน้าเดียว
mousesports

คำตอบ:


30

ฉันคิดว่าความสมดุลที่ดีที่สุดระหว่างประสิทธิภาพและการใช้วิธีการ WordPress ที่เหมาะสมสำหรับการเพิ่มจาวาสคริปต์จะเป็นการเพิ่มบางสิ่งตามบรรทัดเหล่านี้ไปยังไฟล์ฟังก์ชั่นธีมของคุณ ตัวอย่างเช่น:

functions.php:

function load_scripts() {
    global $post;

    if( is_page() || is_single() )
    {
        switch($post->post_name) // post_name is the post slug which is more consistent for matching to here
        {
            case 'home':
                wp_enqueue_script('home', get_template_directory_uri() . '/js/home.js', array('jquery'), '', false);
                break;
            case 'about-page':
                wp_enqueue_script('about', get_template_directory_uri() . '/js/about-page.js', array('jquery'), '', true);
                break;
            case 'some-post':
                wp_enqueue_script('somepost', get_template_directory_uri() . '/js/somepost.js', array('jquery'), '1.6', true);
                break;
        }
    } 
}

add_action('wp_enqueue_scripts', 'load_scripts');

นี้จะช่วยให้คุณสามารถควบคุมสิ่งที่ได้รับการโหลดที่เป็นสถานที่ส่วนกลางในรูปแบบของคุณ functions.php ไฟล์สำหรับการแก้ไขสิ่งที่ได้รับการโหลดที่และวิธีนี้ใช้ WordPress วิธีการสำหรับการเพิ่มจาวาสคริปต์ในการโพสต์และหน้าเว็บของคุณได้อย่างปลอดภัย


1
ฟังก์ชั่นเล็ก ๆ น้อย ๆ ที่ดี คุณถูกต้องเกี่ยวกับการมี 'ตำแหน่งศูนย์กลาง' ที่เป็นประโยชน์ ขอบคุณมัด
mousesports

3
ฉันคิดว่ามันสามารถทำความสะอาดได้บ้าง คุณกำลังตรวจสอบสิ่งเดียวกันโดยใช้สองกรณีที่แตกต่างกัน ฉันว่าทั้งสองกรณีรวมสวิทช์และเงื่อนไขถ้าเป็นif (is_page() || is_single())ได้ คุณคิดว่าเบ็นคืออะไร?
mousesports

ฟังดูเหมือนเป็นการปรับปรุงสำหรับฉัน สิ่งที่ดี!
Ben HartLenn

@Ben มันคือfunction.php อันใดอันหนึ่งในธีมหรือในwp- include ? ชื่อหน้าของฉันคือ การเข้าถึงหน้าแรกออนไลน์และฉันได้ทำให้ฟังก์ชั่นของคุณเปลี่ยนhomeไปAccess to Home Onlineแต่มันไม่ทำงาน?
Ciasto piekarz

@Ciastopiekarz ฉันได้อัปเดตคำตอบของฉันเพื่อแสดงให้เห็นว่าโค้ดจะอยู่ในไฟล์ themes.php ของคุณ
เบ็นฮา

2

สิ่งที่ฉันจะทำคือวางในส่วนท้ายหรือส่วนหัวและใช้เงื่อนไข PHP

ตัวอย่างเช่น:

<?php if (is_page ('your-page')){?>

  <script type="text/javascript" src"the file path"></script>

<?php } elseif ( is_page ('another')){?>

  <script type="text/javascript" src"the file path"></script>

<?php } else { ?>

  <script type="text/javascript" src"the file path"></script>

<?php } ?>

วิธีนี้จะทำให้คุณไม่ได้เรียกสคริปต์ทั้งหมดตลอดเวลาในการโหลดหน้าเว็บแต่ละหน้าและเรียกเฉพาะสิ่งที่คุณต้องการ

นี่คือลิงค์ไปยัง Wordpress codex http://codex.wordpress.org/Conditional_Tags

และถ้าคุณมีสคริปต์พิเศษที่อาจจำเป็นต้องเรียกใช้ในแต่ละโพสต์เท่านั้นให้ใช้ฟิลด์ที่กำหนดเอง


ขอบคุณ Nicole - นี่คือ # 3 มันเป็นทางออกที่ดีเมื่อพิจารณาว่าฉันจะไม่มีหลายหน้า ... ยังคงพิจารณาอยู่
mousesports

Whati มีด้านบนสามารถใช้กับรายการต่าง ๆ ของ wordpress codex เช่น: is_categories, is_single (สำหรับโพสต์), is_post_type ... ฉันเพิ่มลิงค์ไปยังรายการเงื่อนไขของ wordpress ในคำตอบของฉันข้างต้น
Nicole

0

วิธีการทดสอบอื่น ๆ อยู่ด้านล่างเพิ่มในหน้าโดยตรงจากบรรณาธิการและเพิ่มความคิดเห็นด้วยในแท็กสคริปต์อื่น ๆ ที่ชาญฉลาดมันจะไม่ทำงาน

<script type="text/javascript">
<!--
var a = 5;
alert("hello world. The value of a is: " + a);
-->
</script>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.