Ta część kodu jest zbędna:
if($count==''){
$count = 0;
delete_post_meta($postID, $count_key);
add_post_meta($postID, $count_key, '0');
bo można ją zastąpić jedną funkcją: update_post_meta
.
Gdy pobierzesz już wartość pola:
$count = get_post_meta($postID, $count_key, true);
Najpierw sprawdzasz czy jest ono puste:
if($count==''){
żeby wykonać dalszą cześć kodu czyli nadać zmiennej $count
wartość 0
, usunąć to pole i znów dodać.
Z punktu widzenia pierwszego uruchomienia to delete_post_meta
nic nie usuwa, bo takiego pola niema (nie zostało jeszcze utworzone), więc funkcja w tym miejscu jest zbędna tak samo jak add_post_meta
, która i tak by była użyta gdyby w bazie nie było tego pola.
Dlatego podałem Ci taki przykład:
$prev_value = (int) get_post_meta( get_the_ID(), $meta_key, true );
if ( empty( $prev_value ) ) {
$prev_value = 0;
}
update_post_meta( get_the_ID(), $meta_key, ++$prev_value );
Najpierw pobierasz wartość pola i jeżeli jest puste (a jest, bo to pierwsze uruchomienie) nadajesz zmiennej wartość początkową 0.
A później wykonuje się już funkcja aktualizacji pola. I tu pewnie się zastanawiasz: No dobra, a jak sie owe pole dodaje?
Jak sie doda wartość do bazy?
Dodaje się, przy pomocy add_post_meta
. ale w innej kolejności. Kiedy użyjesz update_post_meta
ale w bazie nie będzie tego pola, pole to zostanie utworzone przy pomocy add_post_meta
.
Niby działa tak samo a różnica w kodzie znaczna.
Ale oczywiście jeżeli tobie to działa to dlaczego masz zmieniać?
Zastanawiam się tylko, jak odpalasz te funkcje. Pewnie musisz dodać je do któregoś pliku w szablonie?
header.php?
Bo same z siebie nie będą działać, dlatego ja podpiąłem je pod zaczep akcji: template_redirect
.
Drugie spostrzeżenie.
Zauważyłem, że dla ciastek użyłeś warunków: is_page is_post, ale dla setPostViews
już nie.
Lepiej by było a raczej należy to tam zrobić, bo inaczej może Ci nadpisywać wszystkie pola w bazie, gdyż strona główna nie posiada ID, chyba, że jest to front_page
.
Jeżeli już wstawiasz set_cookieStatus()
w setPostViews
co nawet jest lepszym pomysłem, dodaj warunek tylko do funkcji: setPostViews
, bo przecież i tak trzeba najpierw sprawdzić ciastko a ja to zrobiłem dwa razy.
Na koniec, trzymaj się zasad i unikaj używania przypadkowych nazw funkcji. Zawsze powinny być one tworzone z inicjałów autora i/lub wtyczki.