Może to wydawać się całkiem miłe, ale podążaj za mną tutaj.
Próbuję dodać logikę poprzez pre_get_posts
akcję. To cały podany mi obiekt WP_Query. (patrz koniec)
Rzeczy, które rozważałem przy użyciu:
is_single()
- zbyt szeroki.is_singular()
- zbyt wcześnie, aby z tego korzystać, ponieważget_queried_object()
nie zostało to jeszcze ustawione.$query->single
właściwość - znowu zbyt szeroka.$query->get('post_type')
- nieustawione, ponieważ używaname
właściwości.
czy name
naprawdę jest to jedyny wskaźnik tutaj?
WP_Query Object
(
[query] => Array
(
[page] =>
[name] => abcs-of-mental-health
)
[query_vars] => Array
(
[page] =>
[name] => abcs-of-mental-health
[error] =>
[m] => 0
[p] => 0
[post_parent] =>
[subpost] =>
[subpost_id] =>
[attachment] =>
[attachment_id] => 0
[static] =>
[pagename] =>
[page_id] => 0
[second] =>
[minute] =>
[hour] =>
[day] => 0
[monthnum] => 0
[year] => 0
[w] => 0
[category_name] =>
[tag] =>
[cat] =>
[tag_id] =>
[author_name] =>
[feed] =>
[tb] =>
[paged] => 0
[comments_popup] =>
[meta_key] =>
[meta_value] =>
[preview] =>
[s] =>
[sentence] =>
[fields] =>
[menu_order] =>
[category__in] => Array
(
)
[category__not_in] => Array
(
)
[category__and] => Array
(
)
[post__in] => Array
(
)
[post__not_in] => Array
(
)
[tag__in] => Array
(
)
[tag__not_in] => Array
(
)
[tag__and] => Array
(
)
[tag_slug__in] => Array
(
)
[tag_slug__and] => Array
(
)
[post_parent__in] => Array
(
)
[post_parent__not_in] => Array
(
)
)
[tax_query] =>
[meta_query] =>
[queried_object] =>
[queried_object_id] => 0
[post_count] => 0
[current_post] => -1
[in_the_loop] =>
[comment_count] => 0
[current_comment] => -1
[found_posts] => 0
[max_num_pages] => 0
[max_num_comment_pages] => 0
[is_single] => 1
[is_preview] =>
[is_page] =>
[is_archive] =>
[is_date] =>
[is_year] =>
[is_month] =>
[is_day] =>
[is_time] =>
[is_author] =>
[is_category] =>
[is_tag] =>
[is_tax] =>
[is_search] =>
[is_feed] =>
[is_comment_feed] =>
[is_trackback] =>
[is_home] =>
[is_404] =>
[is_comments_popup] =>
[is_paged] =>
[is_admin] =>
[is_attachment] =>
[is_singular] => 1
[is_robots] =>
[is_posts_page] =>
[is_post_type_archive] =>
[query_vars_hash] => f473ebf7f725c2627dc5fd9a1429f626
[query_vars_changed] =>
[thumbnails_cached] =>
)
pre_get_posts
(przed uruchomieniem zapytania)?is_page()
jest ustawiony napre_get_posts
poziomie. Jeśli tak, i mogę sprawdzić, czypost_type
nie jest ustawiony w query_vars, myślę, że to tak dobre, jak to możliwe? Tak zepsute.is_page
wydaje się być ustawiony.Nie wiem, czy to się przyda:
Użyj $ wp_query-> posts (tablica), aby sprawdzić typ postu.
źródło
$wp_query->posts
zmienna zostanie zapełniona. W każdym razie dzięki!Po kilku testach widzę, że niestety nie można uzyskać typu postu cpt wewnątrz
pre_get_posts
haka.is_page
Można tam pobrać tylko działające, ale nie standardowy typ postu ani cpt.Jeśli masz tylko stronę i post (nie CPT) sprawdza się
is_single()
ztrue
jak środki reagowania, że typ jest po postu, ponieważ return false dla stron.Jeśli masz także CPT, obawiam się, że musisz wykonać dodatkowe zapytanie . Najprostsze, co mogę wymyślić, to po prostu pobrać
post_type
kolumnę, w której publikowany jest status postu, a wymagana jest nazwa postu (pomijanie wersji):Jeśli chcesz sprawdzić konkretny typ postu, możesz napisać niestandardowy tag warunkowy, który zlicza wiersze o określonym typie postu i nazwie:
Oczywiście jest to potrzebne
pre_get_post
, w dowolnym późniejszym haku można użyćget_post_type()
...źródło
To jest to, czego używam, choć specjalizuje się w mojej strukturze katalogów.
Przebieg może się różnić. Bity strpos, w których sprawdzam, czy pliki znajdują się w jednym katalogu, ale nie w innym, będą musiały zostać zmodyfikowane dla twojej kompilacji i prawdopodobnie mogłyby być ponownie wydajniej przetworzone. Istnieją, aby wyciąć wyniki powyżej i poniżej określonej struktury katalogów.
Uruchomienie thelist () w stopce da numerowaną listę każdego pliku szablonu .php użytego do skompilowania bieżącego widoku. Jest to szczególnie przydatne, gdy mamy do czynienia z motywem potomnym, który wyświetla tajemniczy element.
źródło