PYTANIE I ODPOWIEDŹ ZMIENIONO
Czasami pojawiają się te pytania, które cię dręczą i ścigają w późniejszym życiu, i to jest jedno z takich pytań.
To pytanie sprawiło, że pomyślałem o alternatywnym rozwiązaniu problemu. Jak już wspomniałem, niestandardowe pola i pola są przeznaczone do przechowywania małych fragmentów metadanych, a nie do działania jako rozszerzenie do publikowania treści, w których można wykonać krótki kod i funkcje. Jak już wspomniałem, twoja metoda jest niepoprawna i nie powinna być używana
Interesujące dla mnie w tym poście jest to, że użyłeś niestandardowych pól i metadanych, aby przypadkowo wyświetlić niestandardową treść na podstawie danych wprowadzonych przez użytkownika. Więc usiadłem i pomyślałem o możliwym sposobie, aby to zadziałało i poprawnie używało niestandardowych danych pola i danych meta-box
Oto mój pomysł:
SCENARIUSZ:
UWAGA: Można to zmodyfikować w zależności od potrzeb
W pojedynczym poście użytkownik chce / wymaga dynamicznego wyświetlania niestandardowej treści po poście, aby dostosować go do jego potrzeb. To powinno być dynamiczne. Treść powinna być niestandardowym zapytaniem, a użytkownik musi wybrać, co pokazać, kiedy chce i czego chce
MOŻLIWE ROZWIĄZANIE:
Skróty nie będą tutaj działać, ponieważ nie można ich wykonać w niestandardowych polach. Ani nie będziedo_shortcode
zadziała, ponieważ nie jest dynamiczny i jest zakodowany na stałe, czego nie chcemy. Tak jak w Twoim pytaniu, wykorzystamy pola niestandardowe. Ponownie podkreślam, nie używaj niestandardowego pola do wykonania niestandardowego zapytania lub skrótów
PLAN:
Użyjemy niestandardowego pola, aby zapisać tylko nasze argumenty zapytania, to wszystko. Tak więc tworzymy niestandardowe pole o nazwie custom_query_arguments
. Na ekranie edytora postów zobaczysz teraz niestandardowe pole gotowe do użycia
Następnym krokiem będzie dodanie niestandardowych argumentów zapytania do naszego pola. Powiedzmy, że musimy pokazać 3 posty z kategorii 1 posortowane według tytułu. Dlatego nasze argumenty zapytania powinny wyglądać następująco: (w formacie ciągu )
'posts_per_page=3&cat=1&orderby=title'
To właśnie powinieneś teraz wpisać w swoim polu niestandardowym. Po wprowadzeniu zapisz wartość swojego pola niestandardowego
Następnie zbuduj niestandardowe zapytanie w pliku single.php. To, co jest potrzebne tutaj, musimy pobrać wartość z naszego niestandardowego pola, które w rzeczywistości są naszymi argumentami zapytania, i przekazać je do nowej instancji w WP_Query
celu pobrania postów. Musimy również sprawdzić, czy rzeczywiście mamy zapisaną wartość w tym polu niestandardowym, jeśli pole niestandardowe jest puste, nic nie pokazuj
KOD:
Możesz spróbować czegoś takiego w single.php zaraz po pojedynczym poście.
$args = get_post_meta( get_queried_object_id(), 'custom_query_arguments', true );
// check if the custom field has a value
if( ! empty( $args ) ) {
$q = new WP_Query( $args );
if( $q->have_posts() ) {
while( $q->have_posts() ) {
$q->the_post();
the_title();
}
wp_reset_postdata();
}
}
Jeśli użytkownik chce usunąć niestandardowe zapytanie, może po prostu usunąć wartość pola niestandardowego i pozostawić pole niestandardowe puste. Jeśli musi pokazać to samo zapytanie, ale z kategorii 10 i łącznie 5 postów, może po prostu zastąpić oryginalną wartość następującym:
'posts_per_page=5&cat=10&orderby=title'
KILKA UWAG:
Ważne jest, aby używać poprawnej synatxu i formatu podczas wprowadzania informacji w tych niestandardowych polach i meta-polach. Błędy składniowe lub niepoprawne informacje doprowadzą do niepożądanych wyników lub nawet błędów krytycznych. Ważne jest, aby poinformować klientów o takich informacjach
ORYGINALNA ODPOWIEDŹ
Nie rozumiem, co próbujesz osiągnąć, ale z tego, co mogę ci powiedzieć, są to dwie odrębne rzeczy
OPCJA 1
apply_filters('the_content', $content);
służy do zastosowania filtrów treści do surowej, niefiltrowanej zawartości postów, która zwykle pochodzi z użycia $post->post_content
. Te filtry obejmują słynny filtr, wp_autop
który dodaje tagi pthe_content()
apply_filters('the_content', $content);
jest zwykle używany w połączeniu z get_posts
miejscem, w którym działa się bezpośrednio z WP_Post
obiektami, bez użycia, setup_postdata( $post )
co czyni tagi szablonu podobnymithe_content()
dostępne do użycia
OPCJA 2
do_shortcode
służy do dodawania krótkiego kodu w dowolnym miejscu w plikach szablonów poza edytorem tekstowym na zapleczu ekranu edytora stron, w zasadzie filtrując skróty przez ich zaczepy.
Prawidłowe użycie jest następujące
Przykład: dodawanie krótkiego kodu galerii w pliku szablonu
echo do_shortcode( '[gallery]' )
EDYCJA 1
Z twoich komentarzy w ogóle nie użyłbym krótkiego kodu.
Jeśli nie zamierzasz dodawać shortcode za pomocą edytora tekstu i dodawać go bezpośrednio (hardcode) za do_shortcode
pomocą pliku szablonu, wolałbym po prostu dodać funkcję do szablonu
Przykład:
Jeśli masz następującą funkcję shortcode
function footag_func( $atts ) {
return "foo = {$atts['foo']}";
}
add_shortcode( 'footag', 'footag_func' );
Możesz po prostu wywołać tę funkcję bezpośrednio w szablonie, takim jak
echo footag_func();
Jest to znacznie szybsze, ponieważ nie trzeba analizować krótkiego kodu
EDYCJA 2
Szczerze mówiąc, robisz to źle podczas edycji. Dlatego nie mogłem zrozumieć twojego pierwszego pytania
Czasami muszę dodać meta postów do postów / stron / niestandardowych typów postów, aby mogły dodać skróty (suwak, formularz kontaktowy itp.) Lub po prostu zwykły tekst. To jest plik tekstowy.
Aby shortcode działał, używam opcji 1 .....
Pola niestandardowe nie są polami tekstowymi i na pewno nie są przeznaczone do wykonywania skrótów, w tym przypadku suwaków lub formularzy kontaktowych. Nie należy nigdy używać pól niestandardowych do zastępowania edytora tekstu w postach i stronach.
Jak już wspomniałem, apply_filters('the_content', $content);
ma służyć do formatowania surowej zawartości postu.
Masz tutaj dwie możliwości
Używaj do_shortcode
bezpośrednio w plikach szablonów, których nie polecam, ponieważ korzystanie z tej funkcji jest szybsze, ponieważ krótki kod nie musi być analizowany
Użyj krótkiego kodu bezpośrednio w edytorze tekstu dla określonej strony / postu
Szczerze polecam, abyś spojrzał na swoje nowe struktury i to, co chcesz osiągnąć. Niestandardowe pola nie są edytorami tekstu i nie mogą wykonywać skrótów ani suwaków.
Radzę zajrzeć do niestandardowych widżetów lub systemu, którego można używać z niestandardowymi polami