Sziasztok,
Azt szeretném kérdezni, hogy esetleg össze van-e valahol szedve egy helyre a WP-hez az összes olyan feltétel, amivel tudok szűrni tartalomtípusonként?
Pl.: if (is_page()) {}
Legyen szó egy popup plugin-ról, ami egyes aloldalakon felugorhat, míg másokon nem. Vagy csak a főoldalon… (persze szűrés nélkül is felugorhat mindenhol).
Ezekre a tartalomtípusokra gondoltam első körben:
- all
- homepage
- page
- post
- custom post type
- category
Miket lenne még érdemes hozzáadni a fenti listához, hogy minél teljesebben le lehessen fedni a tartalmakat?
Előre is köszönöm a válaszokat!
WordPress-ben a következő tartalom típusok vannak, ezeknek vannak URL-jei is
- post + post meta, ide tartozik mindenféle post típus: post, page, CPT
- taxonomy terms, azaz post osztályozás, alapból: címke és kategória
- comment + comment meta (a kommenteknek nincs külön URL-je)
- user + user meta
Ilyen belépési pontok, vagy HTTP kérés (HTTP request) típusok vannak: https://github.com/szepeviktor/debian-server-tools/blob/master/webserver/wordpress/_core-is.php#L58-L100
Ha a sablon oldaláról közelíted meg, akkor ezek vannak: https://codex.wordpress.org/Conditional_Tags
Nagyon szépen köszi a választ!
Ha jól értem, akkor a kategória, a tag és a taxonomy is egyfajta page, lehet, hogy érdemes lenne egy kalap alá vennem(?).
Erre jutottam eddig a feltételekkel kapcsolatban:
if ( is_home() || is_front_page() ) {
// homepage - ezt teljesen külön szeretném venni és csak az számít, hogy főoldal-e és nem az, hogy page vagy post-e
} elseif ( is_single() ) {
if ( _________________ ) {
// custom post type
} else {
// simple post
}
} elseif ( is_page() ) {
// page
if ( is_category() ) {
// category page
} elseif ( is_archive() ) {
// archive page
} elseif ( is_tax() ) {
// taxonomy page
} elseif ( is_tag() ) {
// tag page
} else {
// any page type
}
}
Arra nem jöttem rá, hogy hogyan különböztetem meg a sima post-ot a custom post type-tól. Stackoverflow-on láttam, hogy írtak rá külön függvényt, de hátha van beépítve egyszerűbb megoldás, ahol nem kell ID-t átadni és kicsit “automatikusabb”.
Jó felé tapogatózom a feltételekkel kapcsolatban vagy másképp lenne logikus? A cél az lenne, hogy minél jobban be tudja állítani a pluginban a felhasználó, hogy hol szeretné megjeleníteni, amit a plugin generál, viszont azt sem szeretném, ha idegesítő lenne, hogy mindenhol pipálgatnia kellene feleslegesen.
Ennek a kódnak a megírásához ezt érdemes megérteni: https://wphierarchy.com/
pl. CPT-ket ezzel lehet detektálni https://developer.wordpress.org/reference/functions/get_post_type/
$post_type = get_post_type();
if ( in_array( $post_type, ['post', 'page'], true ) ) {
Szia, köszi szépen, nagyon durva ez a WP hierachia.
Ezek szerint még custom page is van? Arra sem találtam még semmit a neten, hogy hogy lehet azt ellenőrizni, hogy egy page default-e vagy custom.
Az ábra alapján így próbáltam átvariálni, talán így egy kicsit logikusabb a bontás, de őszintén szólva, fogalmam sincs, hogy a felhasználóknak általában hogy szokott ez a jellegű szűrés megfelelni.
-
homepage
-
archive pages
-
search page
-
404 page
-
page
-
post
-
custom post type
if ( is_front_page() || is_home() ) {
// main page
} elseif ( is_archive() ) {
// archive pages
} elseif ( is_search() ) {
// search page
} elseif ( is_404() ) {
// 404 pages
} elseif ( is_page() ) {
// other pages
} elseif ( is_single() ) {
// posts
$post_type = get_post_type();
if ( in_array( $post_type, ['post', 'page'], true ) ) {
// custom post type
} else {
// post
}
}
Ez így mennyire tűnik megfelelőnek?