Temat ukrywania niektórych treści na stronie, opartej o WordPress, jest dosyć często poruszany na przeróżnych forach poświęconych temu CMS-owi. W tym wpisie przedstawiam 4 proste fragmenty kodu, dzięki którym nawet nowicjusz w dziedzinie budowania stron internetowych, będzie w stanie ukryć na swojej stronie niepożądane treści.
Zaznaczam, że przedstawione tutaj sposoby to tylko jedna z dróg na poradzenie sobie z problemem, a czasem nawet nie do końca najlepszym.
Jak dodać wybrany snippet do strony
Aby zastosować wybrany snippet na swojej stronie, wystarczy skopiować cały zamieszczony w wybranym akapicie kod, a następnie wkleić go na końcu pliku functions.php
aktywnego motywu.
Jak ukryć kategorie na stronie
Pierwszy snippet służy do ukrywania kategorii na stronie. Dzięki jego zastosowaniu w bardzo szybki sposób możemy zatrzymać ich wyświetlanie na stronach pojedynczych wpisów:
function wpa_categories_filter() { if(is_single()) { return FALSE; } } add_filter('the_category','wpa_categories_filter');
Jak ukryć tagi na stronie
Tagi, to kolejna taksonomia, którą czasem chcielibyśmy ukryć przed użytkownikami. Poniższy snippet, podobnie jak powyższy, ukryje tagi na pojedynczych stronach:
function wpa_tags_filter() { if(is_single()) { return FALSE; } } add_filter('the_tags','wpa_tags_filter');
Jak ukryć datę na stronie
Snippet ukrywający datę:
function wpa_time_filter() { if(is_single()) { return FALSE; } } add_filter('get_the_date','wpa_time_filter');
Jak ukryć komentarze na stronie
Na tym blogu znajdziecie również inny wpis „Jak wyłączyć możliwość komentowania” dotyczący tego zagadnienia, jest on swego rodzaju odmianą tego sposobu. Osobiście, wydaje mi się jednak, że sposób przedstawiony tam jest trochę trudniejszy, szczególnie ze względu na konieczność szukania odpowiednich funkcji w plikach motywu – tutaj mamy tylko „kopiuj-wklej”.
Ten sposób jest oparty o filtr WordPress, który decyduje, który plik z szablonem komentarzy ma zostać wykorzystany. Pomysł jest prosty – zamiast pliku z szablonem komentarzy podajemy pusty plik. Oczywiście nie da się oszukać WordPress podając fałszywą ścieżkę, ponieważ „oryginalna funkcja” sprawdza, czy plik rzeczywiście istnieje, toteż najłatwiej będzie utworzyć nowy pusty plik w katalogu motywu.
Snippet ukrywający za razem komentarze jak i formularz dodawania komentarzy:
function wpa_comments_filter() { $file_path = get_template_directory() . '/tmp.php'; fclose(fopen($file_path, "w")); return $file_path; } add_filter('comments_template', 'wpa_comments_filter');
Jeżeli po wklejeniu kodu do functions.php
sposób nie zadziałał, należy sprawdzić, czy w katalogu głównym aktywnego motywu, został utworzony plik tmp.php
. Jeżeli nie – można ten plik utworzyć ręcznie. Ważne, aby był z odpowiednią nazwą.
Podsumowanie
Wszystkie opisane tutaj sposoby oparte są o zastosowanie wbudowanych w WordPress filtrów. Każdy z nich można jak najbardziej rozbudowywać i dostosowywać do własnych wymagań – sprawdzanie taksonomii, czy formatu wpisu. Czasem, zależnie od zastosowanego motywu, podany tutaj sposób może nie być najlepszym rozwiązaniem i tak np. w przypadku kategorii czy tagów w ich miejscu może pozostać samotna ikona, albo coś co wskazywałoby na pierwotną formę – np. nagłówki typu „Wpis zapisany w kategoriach”, „Przypisano do tych tagów”, albo wszelkie bloki „obudowujące” podane sekcje – w takich przypadkach podany snippet się nie sprawdzi.
Dobry poradnik! Dzięki!
Super, tego szukałem ! Wielkie dzięki. Pytanie do Pana, są jakieś „snippety” aby ukryć użytkownika (domyślnie admin) i ten kalendarzyk co jest koło niego w lewym górnym rogu artykułu oraz jak skasować menu/linki do poprzedniej / następnej kategorii które pojawiają się pod artykułem ? Nie wiem jak to się fachowo nazywa. Z WP są to moje pierwsze kroki. Aby było jaśniej zrzut ekranu http://s5.ifotos.pl/img/zrzutjpg_ssnhxrr.jpg
Ikona kalendarza to jest właśnie to, o czym wspominałem w podsumowaniu artykułu – czasem, zależnie od motywu coś może pozostać po niektórych treściach i niestety nie ma na to gotowca. W takich przypadkach potrzebne będzie indywidualne podejście do problemu. Podejrzenie kodu staje się niestety koniecznością.
W Twoim przypadku, bo chyba planujesz hurtowo ukryć sporo rzeczy, lepiej byłoby odszukanie odpowiedzialnego za to kodu w plikach – lepiej zapobiec wywołaniu funkcji wyświetlającej, niż angażować dodatkowe funkcje aby zatrzymać wyświetlanie. Nieco mniej eleganckim rozwiązaniem mogłoby być skorzystanie z CSS – display:none, ale z pewnych względów nie jest to polecane. Jeżeli podasz nazwę motywu, to możliwe że otrzymasz konkretniejszą odpowiedź… 🙂
Pozdrawiam
Jest to motyw ultra https://pl.wordpress.org/themes/ultra/. Linka niestety nie podam bo mam go na localhoście i serwerze wirtualnym WAMP. Dokładnie, masówka idzie w tym wypadku 🙂
OK. Otwórz sobie do edycji plik
content-single.php
, dużo kodu tam nie ma, ale jeżeli chcesz się pozbyć wszystkiego co znajduje się w stopce wpisu, to możesz skasować (wykomentować) linijki 28-31, i wszystko powinno zniknąć.Skasowałem wszystko co zaczynało się na i skończyło na , włącznie z nimi. Nic się nie zmieniło. Dalej widać u góry : kalendarz, ołówek a obok niego napis admin a na dole link po prawo i lewo do następnej kategorii. Plik który edytowałem znajdował się w głównym katalogu folderu ultra.
Efekt powinien być widoczny na stronie pojedynczego wpisu. Myślę, że o to tutaj chodzi.
Czy na pewno nic się nie zmieniło?
Jeżeli przykładowo chciałbyś skasować stopkę na liście wpisów, edytuj
content.php
i linijki 44-46. Prawdopodobnie moja wina że nie zapytałem wcześniej. 🙂Niestety efektu zero, dosłownie. Nic się nie zmieniło. Czyściłem cache przeglądarki, dla pewności sprawdziłem na 3 różnych i nici. Ten szablon ma chyba jakieś opcje poukrywane że tego się wyłączyć nie da tak łatwo. Efekt tego zabiegu http://wyslij-plik.pl/5932/view/zrzut.jpg Kod po modyfikacji http://wyslij-plik.pl/5933/view/zrzut2.jpg
Dobra, już wiem. Ja ci podałem rozwiązanie do skasowania stopki wpisu, a Ty potrzebujesz do headera. W pliku
single.php
spróbuj skasować linijki 20-26. Efekt powinien być widoczny na stronie pojedynczego wpisu.No i bingo, górny notes z napisem admin już jest historią. A da się coś zrobić z napisem usługi i cookies (http://wyslij-plik.pl/5932/view/zrzut.jpg) widocznymi pod artykułem ?
To będzie 35 linijka w
single.pl
– skasuj, wykomentuj, jak wolisz.<?php if ( siteorigin_setting( 'navigation_post_nav' ) ) the_post_navigation(); ?>
Za nic nie mogę odszukać pliku single.pl. Chyba chodzi o single.php ? Tak czy siak to właśnie w nim odszukałem i skasowałem ten kod który podałeś. Wielkie dzięki !
Tak, o to mi chodziło. Wkradła się literówka. 😎
Pozdrawiam
Sposób na ukrycie daty na stronie działa. Dzięki!
Wielkie dzięki za tak dobrą wskazówkę, za ten kawałek kodu, cieszę się że tu trafiłam, od tygodnia męczyłam się z niechcianymi kategoriami pod wpisem i w końcu znalazłam to co potrzebowałam, nigdzie tego nie ma. Temat artykuły dobrze przemyślany, pomocny dla takich laików jak ja. Wielkie, wielkie Dzięki!
Polecam się. Miłego blogowania!
Mam taką prośbę, pytanie, co do tego skryptu, który okazał się znakomitym rozwiązaniem w przypadku wpisów na stronie. Czy istnieje jeszcze możliwość przerobienia tego by dziadziało to na stronach, page . Jeśli mogłabym poprosić o jakąś wskazówkę…. to bardzo prosiłbym. Dodam jeszcze że próbowałam już w miejscu if ( is_single() ) na if ( is_single page() ) potem na if ( is_page() ) i na if ( is_single pages() ) ale wyskakuje mi błąd. Jestem świadoma że może coś tu innego jeszcze powinnam zmodyfikować ale kompletnie nie wiem co. A może jest jeszcze jakiś inny sposób. Bardzo proszę o pomoc
// dodanie przed i po poscie jednostki reklamowe
function add_text($content)
{
//kod reklamy
$ad = 'TWÓJ KOD REKLAMY’;
$updated_content = ”;
if ( is_single() )
{
$updated_content = $ad . ” . $content . ” . $ad . ”;
return $updated_content;
}
else
{
return $content;
}
}
add_filter( 'the_content’, 'add_text’ );
Witaj,
ten kod na końcu Twojego komentarza jakoś nie pasuje mi do pytania, bo nie wiem czy kombinujesz z kategoriami czy z kodem reklamy? 🙂
Uznaję, że działamy na kodzie spod akapitu o ukrywaniu kategorii. Dlatego spróbuj podmienić linijki:
if(is_single()) {
naif(is_singular()) {
– powinien ukrywać kategorie na wszystkich pojedynczych typach wpisów w tym postach, stronach, załącznikach…albo na takie coś:
if(is_singular(array( 'post', 'page'))) {
albo tak:
if(is_single() || is_page()) {
W razie problemów pisz…
Pozdrawiam
Witaj, dziękuję za odpowiedź, w tym przypadku kombinowałam z kodem reklamy zaczerpniętej z wpisu o
https://wpadmin.pl/jak-dodac-cos-przed-i-po-kazdym-wpisie/ 🙂 Przepraszam bo właściwie pod tym wpisem powinnam była zadać to pytanie.
Spróbowałam jeszcze podmienić teraz jeszcze w tym kodzie na te kilka wersji które mi podałeś, jednak wyświetla mi przy każdym jakąś informacje o błędzie. Oczywiście, rozumiem że podałeś mi to w przypadku na kodzie spod akapitu o ukrywaniu kategorii, ale myślę sobie próba nie strzelba, spróbuję, może przypasuje to też do tego od kodu z wpisu o kodzie reklamy, widzę jednak że to się jednak tak nie da, poproszę raz jeszcze o kolejną podpowiedź. Pozdrawiam Serdecznie 🙂
Witam ponownie,
Treść błędu, o którym wspominasz byłaby tutaj dość pomocna. 😉
W zasadzie masz rację i obie konstrukcje opierają się o ten sam warunek. Różnicą jest jednak znak
{
, który w tym wpisie pojawia się w linijce z „if”, a przy wpisie z reklamami dopiero w następnej. W poprzednim komentarzu podałem Ci co do znaku co na co zamienić, jednak jeśli użyjesz dokładnie tej linijki w drugim kodzie, to uzyskasz podwójny{{
, które mogą wywoływać Twój błąd. Więc tak to powinno wyglądać w całości:Jeżeli nie o to chodziło to potrzebna będzie treść błędu.
Pozdrawiam!
Witaj, dziękuję Ci za te wskazówki, za poświęcony mi czas i uwagę. Udało mi się dziś zasiądź ponownie do mojego problematycznego tematu i udało się, to wszystko dzięki Tobie. Trudno jest wyrazić moją wdzięczność w słowach, bo pomogłeś mi bardzo. Dziękuję 🙂
Co do tych informacji błędnych to już wiem o co chodziło, cały czas wstawiałam te dwa kody koło siebie, tzn, osobno dla wpisu który już wstawiłam wcześniej i osobno dla strony na którym próbowałam te różne kombinacje i dlatego mi nie wychodziło. To był mój błąd ale no cóż na błędach człowiek się uczy. Teraz się za głowę łapie czemu na to wcześniej nie wpadłam, tym bardziej że wszystko mi podałeś jak na tacy 🙂
Koniec końców wyrzuciłam jeden z nich i skoncentrowałam się na jednym i wymieniłam te linijkę if ( is_singular() )
na if(is_singular(array( 'post’, 'page’))) według jeszcze tych wcześniejszych sugestii
oczywiście o nawiasikach też pamiętam { te szczególiki które łatwo jest czasem przeoczyć 🙂
W całości wstawiam kod, być może ktoś inny jest zainteresowany też tym tematem 🙂
// dodanie przed i po poscie jednostki reklamowe
function add_text($content)
{
//kod reklamy
$ad = 'KOD REKLAMY”>’;
$updated_content = ”;
if(is_singular(array( 'post’, 'page’)))
{
$updated_content = $ad . ” . $content . ” . $ad . ”;
return $updated_content;
}
else
{
return $content;
}
}
add_filter( 'the_content’, 'add_text’ );
Tak więc cieszę się że udało mi się to uruchomić 🙂 Dziękuje Ci za wsparcie. Pozdrawiam Serdecznie 🙂
Super! Cieszę się, że na coś się przydałem. 🙂
Dziękuję za piękny komentarz. Pozdrawiam!
Witaj, potrzebuję pomocy, niestety zbyt słaba jestem w tych tematach by sobie samemu poradzić. Chodzi o komentarze jak można sprawić by w momencie gdy ktoś wpisuje komentarz i po wciśnięciu opublikuj komentarz, osoba komentująca mogła otrzymać informacje zwrotną coś w tym stylu „komentarz został dodamy, czeka na potwierdzenie moderatora” albo w przypadku jakiegoś błędu, żeby też pojawiła się informacja o tym. Dodam że próbowałam już wgrywać jakieś różne pluginy, ale niestety ciągłe wyskakuje mi przy nich że alert że nie może być wtyczka włączona z powodu jakiś błędów. Niestety nie potrafię w żaden sposób to przeskoczyć, pomyślałam jeszcze że może przez functions.php jakimś skryptem to by się dało zrobić. Bardzo proszę o podpowiedź. Pozdrawiam Serdecznie