Satu opsi tambahan, tergantung pada jenis parameter yang perlu Anda lewati. Sebut saja (2a). Anda juga dapat membuat skrip PHP yang menghasilkan text/css
atau menghasilkan secara dinamistext/javascript
bukan text/html
, dan memberikan mereka data yang mereka butuhkan menggunakan parameter GET bukan oleh loading WordPress. Tentu saja ini hanya berfungsi jika Anda perlu memasukkan sejumlah kecil parameter yang relatif kompak. Jadi, misalnya, Anda hanya perlu memasukkan URL kiriman atau direktori file atau sejenisnya, Anda dapat melakukan sesuatu seperti ini:
Di header.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>
Dalam fancy-js.php:
<?php
header("Content-type: text/javascript");
?>
foo = <?php print json_encode($_GET['foo']); ?>;
url = <?php print json_encode($_GET['url']); ?>;
dll.
Tetapi ini hanya memungkinkan Anda mengakses data yang secara langsung diteruskan dalam parameter GET; dan itu hanya akan berfungsi jika jumlah hal yang perlu Anda lewati relatif kecil, dan representasi dari hal-hal itu relatif kompak. (Pada dasarnya beberapa string atau nilai numerik - nama pengguna, katakanlah, atau direktori; bukan daftar semua posting terbaru pengguna atau sesuatu seperti itu.)
Adapun yang salah satu dari opsi ini adalah yang terbaik - saya tidak tahu; itu tergantung pada kasus penggunaan Anda. Opsi (1) memiliki kelebihan yaitu sederhana, dan jelas memungkinkan Anda mengakses data WordPress apa pun yang mungkin Anda perlukan, tanpa kinerja menekan memuat WordPress dua kali. Ini hampir pasti apa yang harus Anda lakukan kecuali Anda memiliki alasan kuat untuk tidak melakukannya (misalnya karena ukuran stylesheet atau skrip yang perlu Anda gunakan).
Jika ukurannya menjadi cukup besar untuk menyebabkan masalah dalam hal berat satu halaman Anda, maka Anda dapat mencoba (2) atau (2a).
Atau yang lain - ini mungkin ide yang lebih baik - Anda dapat mencoba memisahkan bagian-bagian dari skrip atau stylesheet yang benar-benar memanfaatkan data dinamis dari bagian-bagian yang dapat ditentukan secara statis. Katakanlah Anda memiliki stylesheet yang perlu melewati direktori dari WordPress untuk menetapkan parameter latar belakang untuk elemen # my-fancy. Anda bisa memasukkan semua ini ke elemen kepala:
<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>
Tetapi mengapa Anda perlu melakukan itu? Hanya ada satu baris di sini yang bergantung pada data dari WordPress. Lebih baik membagi hanya garis-garis yang bergantung pada WordPress:
<style type="text/css">
#my-fancy-element {
background-image: url(<?php print get_stylesheet_directory_uri(); ?>images/fancy.png);
}
</style>
Tempatkan semua yang lain di stylesheet statis yang Anda muat dengan elemen tautan standar (style.css atau apa pun):
#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 ... */
Dan biarkan kaskade melakukan pekerjaan.
Hal yang sama berlaku untuk JavaScript: daripada melakukan ini:
<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>
Alih-alih meletakkan sesuatu seperti ini di elemen kepala:
<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>
Dan kemudian masukkan sisanya ke file JavaScript statis, menulis ulang my_huge_function () dan my_other_function () untuk memanfaatkan global WordPressPostData.url dan WordPressPostData.author.
40K CSS atau 40K JS hampir selalu dapat dibagi menjadi <1K yang sebenarnya tergantung pada data dinamis, dan sisanya, yang dapat ditentukan dalam file eksternal statis dan kemudian dikombinasi ulang menggunakan kaskade (untuk CSS) atau dapat diakses secara global variabel (global, elemen DOM, atau lubang cubby apa pun yang Anda inginkan, untuk JS).