Một tùy chọn bổ sung, tùy thuộc vào loại tham số bạn cần truyền vào. Hãy gọi nó (2a). Bạn cũng có thể tạo các tập lệnh PHP tạo ra động text/css
hoặc được tạo động text/javascript
hơn là text/html
cung cấp cho chúng dữ liệu mà chúng cần bằng các tham số GET thay vì tải lên WordPress. Tất nhiên điều này chỉ hoạt động nếu bạn cần vượt qua trong một số lượng nhỏ các tham số tương đối nhỏ gọn. Vì vậy, ví dụ, giả sử bạn chỉ cần chuyển URL của bài đăng hoặc thư mục của tệp hoặc tương tự, bạn có thể làm một cái gì đó như thế này:
Trong tiêu đề.php:
<script type="text/javascript" src="<?php print get_stylesheet_directory_uri();
?>/fancy-js.php?foo=bar&url=<?php print urlencode(get_permalink($post->ID)); ?>"></script>
Trong Fancy-js.php:
<?php
header("Content-type: text/javascript");
?>
foo = <?php print json_encode($_GET['foo']); ?>;
url = <?php print json_encode($_GET['url']); ?>;
Vân vân.
Nhưng điều này chỉ cho phép bạn truy cập vào dữ liệu được truyền trực tiếp trong các tham số GET; và nó sẽ chỉ hoạt động nếu số lượng những thứ bạn cần phải vượt qua tương đối nhỏ, và đại diện của những thứ đó tương đối nhỏ gọn. (Về cơ bản có rất nhiều chuỗi hoặc giá trị số - tên người dùng, giả sử hoặc thư mục; không phải là danh sách tất cả các bài đăng gần đây của người dùng hoặc đại loại như thế.)
Đối với một trong những lựa chọn này là tốt nhất - tôi không biết; điều đó phụ thuộc vào trường hợp sử dụng của bạn. Tùy chọn (1) có ưu điểm là đơn giản và rõ ràng cho phép bạn truy cập vào bất kỳ dữ liệu WordPress nào bạn có thể cần, mà không cần hiệu năng của việc tải WordPress hai lần. Đó gần như chắc chắn là những gì bạn nên làm trừ khi bạn có lý do mạnh mẽ để không (ví dụ: do kích thước của biểu định kiểu hoặc tập lệnh mà bạn cần sử dụng).
Nếu kích thước đủ lớn để gây ra sự cố về trọng lượng của một trang của bạn, thì bạn có thể thử (2) hoặc (2a).
Hoặc nếu không - đây có lẽ là ý tưởng tốt hơn - bạn có thể thử tách các phần của tập lệnh hoặc biểu định kiểu thực sự sử dụng dữ liệu động từ các phần có thể được chỉ định tĩnh. Ssay bạn có một biểu định kiểu cần được thông qua một thư mục từ WordPress để đặt tham số nền cho phần tử # my-Fancy. Bạn có thể đặt tất cả những thứ này vào phần tử head:
<style type="text/css">
#my-fancy-element {
background-image: url(<?php print get_stylesheet_directory_uri(); ?>images/fancy.png);
padding: 20px;
margin: 20px;
font-weight: bold;
text-transform: uppercase;
font-size: 12pt;
/* ... KB and KB of additional styles ... */
}
#another-fancy-element {
/* ... KB and KB of additional styles ... */
}
/* ... KB and KB of additional styles ... */
</style>
Nhưng tại sao bạn cần phải làm điều đó? Chỉ có một dòng ở đây phụ thuộc vào dữ liệu từ WordPress. Tốt hơn là chỉ tách ra các dòng phụ thuộc vào WordPress:
<style type="text/css">
#my-fancy-element {
background-image: url(<?php print get_stylesheet_directory_uri(); ?>images/fancy.png);
}
</style>
Đặt mọi thứ khác vào biểu định kiểu tĩnh mà bạn tải bằng phần tử liên kết chuẩn (style.css hoặc bất cứ thứ gì):
#my-fancy-element {
/* background-image provided dynamically */
padding: 20px;
margin: 20px;
font-weight: bold;
text-transform: uppercase;
font-size: 12pt;
/* ... KB and KB of additional styles ... */
}
#another-fancy-element {
/* ... KB and KB of additional styles ... */
}
/* ... KB and KB of additional styles ... */
Và hãy để thác làm việc.
Điều tương tự cũng xảy ra với JavaScript: thay vì làm điều này:
<script type="text/javascript">
// Here comes a huge function that uses WordPress data:
function my_huge_function () {
// Do a million things ...
jQuery('#my-fancy').append('<a href="'+<?php json_encode(get_permalink($GLOBALS['post']->ID)); ?>+'">foo</a>);
// Do a million more things ...
my_other_function(<?php print json_encode(get_userdata($GLOBALS['post']->post_author); ?>);
}
function my_other_function (user) {
// Do a million things ...
}
</script>
Thay vào đó hãy đặt một cái gì đó như thế này trong phần tử head:
<script type="text/javascript">
var WordPressPostData = {
url: <?php print json_encode(get_permalink($GLOBALS['post']->ID)); ?>,
author: <?php print json_encode(get_userdata($GLOBALS['post']->post_author)); ?>
}
</script>
Và sau đó thả phần còn lại vào một tệp JavaScript tĩnh, viết lại my_huge_feft () và my_other_feft () để sử dụng toàn cầu WordPressPostData.url và WordPressPostData. Mượt.
40K CSS hoặc 40K của JS hầu như luôn có thể được chia thành <1K thực sự phụ thuộc vào dữ liệu động và phần còn lại, có thể được chỉ định trong tệp bên ngoài tĩnh và sau đó được kết hợp lại bằng cách sử dụng tầng (cho CSS) hoặc có thể truy cập toàn cầu các biến (toàn cục, các phần tử DOM hoặc bất kỳ lỗ khối nào khác mà bạn thích, cho JS).