Kiedy po raz pierwszy zacząłem myśleć o szablonowaniu w WordPressie, pomyślałem o dwóch aspektach:
- treści specjalnie dla członków ,
- treści, które można podzielić na jeden post.
Ale im więcej o tym myślałem, tym bardziej zdawałem sobie sprawę, że można to (i zapewne powinno) wyjaśnić w kilku postach.
Zamierzam więc podzielić obecny stan szablonów WordPress, a następnie praktyczne sposoby organizowania, powiedzmy, naszych wtyczek, tak aby używaliśmy standardowego PHP.
Następnie w przyszłej serii przyjrzę się, co to znaczy używać innych silników szablonów (zarówno PHP, jak i JavaScript w pracy, którą wykonujemy).
Na początek chciałbym jednak przyjrzeć się, jak często widzimy szablony napisane w kontekście zarówno motywów WordPress, jak i wtyczek.
Szablony WordPress dla początkujących
W zależności od Twojego doświadczenia z WordPressem i innymi systemami opartymi na PHP, Twoja definicja szablonów będzie inna niż czyjaś inna.
Więc próbując stworzyć wspólną definicję, której będę używał w tej serii postów, użyję Kodeksu WordPress:
Szablony to pliki, które kontrolują sposób wyświetlania witryny WordPress w Internecie.
Strona dalej mówi o tym, jak działa w połączeniu z bazą danych i innymi zasobami, i polecam przeczytać o tym, jeśli nie jesteś z nią zaznajomiony.
Jednak powyższa definicja dobrze sprawdza się w tym, jak zamierzam iść naprzód, myśląc o tym.
1 Jak to jest (teraz)
Jeśli chodzi o myślenie o szablonach WordPress, myślę, że warto rozważyć jeden szablon, który z kodem wygląda mniej więcej tak:
<div id="content-container">
<p>
Oh! The garbage chute was a really wonderful idea. What an incredible smell you've discovered! Let's get out of here!
Get away from there... No! wait! Will you forget it? I already tried it. It's magnetically sealed! Put that
thing away! You're going to get us all killed.
</p>
<h2>List of Post Titles For Acme Post Type</h2>
<?php
$args = array(
'post_status' => 'publish',
'post_type' => 'acme',
'posts_per_page' => '10'
);
$custom_query = new WP_Query( $args );
if ($custom_query->have_posts()) {
echo '<ul>';
while ($custom_query->have_posts()) {
$custom_query->the_post();
echo '<li>'. get_the_title(). '</li>';
}
echo '</ul>';
wp_reset_postdata();
}
?>
<p>
Absolutely, Your Worship. Look, I had everything under control until you led us down here. You know, it's not
going to take them long to figure out what happened to us. It could be worst... It's worst.
There's something alive in here! That's your imagination. Something just moves past my leg!
Look! Did you see that? What? Help!
</p>
</div><!-- #content-container -->
Punktem powyższego kodu jest to, że widzisz, że miesza PHP i HTML.
Ponadto ważne jest, aby pamiętać, że każdy z tych plików jest stylizowany za pomocą CSS i może mieć dodatkowe zachowanie kontrolowane przez JavaScript. W tym celu możesz to konceptualizować w ten sposób:
Reprezentuje pojedynczy szablon łączący HTML i PHP w jeden szablon. A ten szablon jest następnie stylizowany za pomocą CSS i kontrolowany za pomocą JavaScript.
Wszystkie te elementy współpracują ze sobą, aby zapewnić to, co widzi użytkownik.
2 Czy organizacja deweloperska generuje wydajność?
Ale sposób, w jaki to działa, jest trochę bałaganiarski i chociaż może wyglądać dobrze dla użytkownika, rodzi kilka pytań:
- Czy jest tak wydajny, jak mógłby być?
- Jak łatwo jest utrzymać programistę?
- Jak wygląda proces kompilacji?
- jak są utrzymywane i zorganizowane aktywa?
Jasne, większość tego, co czytasz powyżej, jest bardzo skupiona na programistach, ale uważam, że kiedy kod jest zorganizowany w taki sposób, że programiści mogą z nim łatwo pracować, często jest to łatwe nawet szybciej dla użytkownika.
Ale co to znaczy?
- Czy wprowadzamy Sassa?
- Czy minimalizujemy JavaScript?
- Jak łączymy te zasoby i importujemy je?
- A co z niestandardowymi zapytaniami PHP, które występują w kontekście każdego szablonu?
I chociaż pierwsze rzeczy są ważne i warte zachodu (i omówię to później w serii), oddzielenie logiki od szablonu, nawet bez silnika szablonów, może sprawić, że kod będzie bardziej skoncentrowany na programistach.
Czy to przyspiesza pracę użytkownika? Niekoniecznie. Ale pomaga nam to zrobić pierwszy krok w tym kierunku.
Zorganizujmy się ponownie
W następnym poście z tej serii podzielę na przykład zawartość, do której jesteśmy przyzwyczajeni w szablonach WordPress, i zacznę ją reorganizować, aby była lepiej zorganizowana w taki sposób, aby techniki można było wykorzystać w różnych projektach.
Oznacza to przenoszenie rzeczy do ich funkcji (lub nawet w ich klasach, a tym samym do ich funkcji) i jak możemy je wywoływać z kontekstu naszych szablonów.
Ostatecznie doprowadzi to do łatwiejszego odczytania kodu, lepszego oddzielenia problemów i skierowania nas w stronę sposobów zmiany sposobu wstrzykiwania danych do szablonu.