Cách hiệu quả nhất để thêm tệp javascript vào bài đăng và / hoặc trang cụ thể?


17

Tôi tự hỏi phương pháp hiệu quả nhất là thêm tệp javascript cụ thể cho bài đăng và / hoặc trang.

Dưới đây là một vài giải pháp tôi đã đưa ra:

  • Chuyển sang chế độ xem chỉnh sửa HTML và đăng JavaScript của bạn vào đó (giải pháp khá tệ)
  • Các trường tùy chỉnh với JavaScript cụ thể cho bài đăng / trang đó trong các cặp khóa & giá trị
  • Trong footer.php, tải các tệp JavaScript tùy thuộc vào trang bạn đang truy cập (điều này dẫn đến rất nhiều điều kiện mặc dù)

Mặt khác, không có tệp JavaScript nào được chia sẻ giữa các trang - nghĩa đen sẽ cụ thể với nội dung bạn đang xem.

Có suy nghĩ gì không?


Hộp meta / trường tùy chỉnh là lựa chọn tốt nhất của bạn
Miha Rekar

Làm thế nào bạn sẽ xác định hiệu quả?
fuxia

1
"Hiệu quả" Tôi có nghĩa là lượng dự phòng mã ít nhất và cách hiệu quả nhất để thực hiện việc này cụ thể cho một bài đăng / trang.
mouseports

Câu trả lời:


29

Tôi nghĩ rằng sự cân bằng tốt nhất giữa hiệu quả và sử dụng các phương pháp wordpress phù hợp để thêm javascript sẽ là thêm một cái gì đó dọc theo các dòng này vào tệp tin.php. Ví dụ:

Hàm.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');

Điều này cho phép bạn kiểm soát hoàn toàn những gì được tải ở đâu, một vị trí tập trung trong tệp tin.php của chủ đề để chỉnh sửa nội dung được tải ở đâu: và, cách này sử dụng các phương thức wordpress để thêm javascript vào bài đăng và trang của bạn một cách an toàn .


1
Chức năng nhỏ đẹp. Bạn nói đúng về việc có một 'vị trí tập trung' là hữu ích. Cảm ơn nhiều.
mouseports

3
Tôi đoán điều này có thể được làm sạch một chút. Về cơ bản, bạn đang kiểm tra điều tương tự với hai trường hợp chuyển đổi khác nhau. Tôi muốn nói kết hợp cả hai trường hợp chuyển đổi và điều kiện nếu có thể if (is_page() || is_single()). Bạn nghĩ gì về Ben?
mouseports

Âm thanh như một sự cải thiện đối với tôi. Tốt một!
Ben HartLenn

@Ben là nó functions.php một chủ đề bên trong hoặc trong wp-includes ? tiêu đề trang của tôi là tiếp cận chủ Online và tôi đã đưa chức năng changeing của bạn homeđể Access to Home Onlinenhưng nó không làm việc?
Ciasto piekarz

@Ciastopiekarz Tôi đã cập nhật câu trả lời của mình để hiển thị rõ hơn rằng mã đi trong tệp tin.php.
Ben HartLenn

2

Những gì tôi sẽ làm là đặt vào chân trang hoặc tiêu đề và sử dụng các điều kiện php.

Ví dụ:

<?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 } ?>

Bằng cách này, bạn không gọi tất cả các tập lệnh mọi lúc trên mỗi trang tải và bạn chỉ gọi những tập lệnh bạn cần.

Đây là một liên kết đến codex Wordpress http://codex.wordpress.org/Conditable_Tags

Và nếu bạn có các tập lệnh đặc biệt có thể chỉ cần được gọi trên mỗi bài đăng, hãy sử dụng các trường tùy chỉnh.


Cảm ơn Nicole - đây là # 3. Đó là một giải pháp hợp lý vì tôi sẽ không có nhiều trang ... vẫn đang xem xét nó.
mouseports

Những gì tôi có ở trên có thể được sử dụng với các mục khác nhau của codex wordpress, chẳng hạn như: is_clists, is_single (cho bài viết), is_post_type ... Tôi đã thêm một liên kết đến danh sách điều kiện của wordpress trong câu trả lời của tôi ở trên.
Nicole

0

Cách thử nghiệm khác là bên dưới thêm vào trang trực tiếp từ biên tập viên và thêm nhận xét với thẻ script khác, nó sẽ không hoạt động.

<script type="text/javascript">
<!--
var a = 5;
alert("hello world. The value of a is: " + a);
-->
</script>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.