Ek bir seçenek, geçmeniz gereken parametrelerin türüne bağlı olarak. Diyelim (2a). Dinamik olarak oluşturulan text/css
veya text/javascript
yerine çıktı veren PHP komut dosyaları oluşturabilir text/html
ve onlara WordPress'i yüklemek yerine GET parametrelerini kullanarak ihtiyaç duydukları verileri sağlayabilirsiniz. Tabii ki bu sadece nispeten az sayıda nispeten kompakt parametre geçmeniz gerektiğinde işe yarar. Örneğin, yalnızca bir gönderinin URL'sini veya bir dosyanın dizinini veya benzerini girmeniz gerektiğini varsayalım, şöyle bir şey yapabilirsiniz:
Header.php dosyasında:
<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>
Fancy-js.php dosyasında:
<?php
header("Content-type: text/javascript");
?>
foo = <?php print json_encode($_GET['foo']); ?>;
url = <?php print json_encode($_GET['url']); ?>;
vb.
Ancak bu yalnızca GET parametrelerinde doğrudan geçirilen verilere erişmenizi sağlar; ve yalnızca geçmeniz gereken şeylerin sayısı nispeten azsa ve bu şeylerin temsili nispeten kompaktsa işe yarayacaktır. (Temelde bir avuç dize veya sayısal değer - bir kullanıcı adı, söz veya dizin; kullanıcının son gönderilerinin veya bunun gibi bir şeyin listesi değil.)
Bu seçeneklerden hangisinin en iyisi olduğu - bilmiyorum; Bu sizin kullanım durumunuza bağlıdır. Seçenek (1), basit olmanın avantajına sahiptir ve WordPress'i iki kez yüklemenin performans isabeti olmadan, muhtemelen ihtiyacınız olabilecek herhangi bir WordPress verilerine erişmenizi sağlar. Güçlü bir nedeniniz olmadıkça (örneğin, kullanmanız gereken stil sayfasının veya komut dosyasının boyutu nedeniyle) neredeyse yapmanız gereken şeydir.
Boyut, bir sayfanızın ağırlığı açısından soruna neden olacak kadar büyük olursa, (2) veya (2a) öğesini deneyebilirsiniz.
Ya da - bu muhtemelen daha iyi bir fikirdir - betiğin veya stil sayfasının dinamik olarak kullanılan kısımlarını statik olarak belirtilebilen parçalardan ayırmayı deneyebilirsiniz. # My fancy öğesi için bir arka plan parametresi ayarlamak üzere WordPress'ten bir dizinden geçirilmesi gereken bir stil sayfanız olduğunu varsayalım. Tüm bunları ana elemana koyabilirsiniz:
<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>
Ama bunu neden yapmanız gerek? Burada WordPress'ten gelen verilere bağlı tek bir satır var. Yalnızca WordPress'e bağlı satırları ayırmak daha iyidir:
<style type="text/css">
#my-fancy-element {
background-image: url(<?php print get_stylesheet_directory_uri(); ?>images/fancy.png);
}
</style>
Diğer her şeyi, standart bir bağlantı öğesiyle (style.css veya başka bir şey) yüklediğiniz statik bir stil sayfasına koyun:
#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 ... */
Ve kaskatın işi yapmasına izin ver.
Aynı şey JavaScript yapmak için de geçerlidir:
<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>
Bunun yerine ana öğeye böyle bir şey koyun:
<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>
Ve sonra geri kalanını statik bir JavaScript dosyasına bırakın, genel WordPressPostData.url ve WordPressPostData.author öğelerinden yararlanmak için my_huge_function () ve my_other_function () öğelerini yeniden yazın.
40K CSS veya 40K JS neredeyse her zaman dinamik verilere bağlı olarak <1K'ya bölünebilir ve geri kalanı statik bir harici dosyada belirtilebilir ve daha sonra kaskad (CSS için) veya global olarak erişilebilir olarak yeniden birleştirilebilir değişkenler (globaller, DOM öğeleri veya JS için tercih ettiğiniz diğer cubby-hole).