Feltételek tartalomtípusokhoz


#1

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!


#2

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


#3

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.


#4

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 ) ) {

#5

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?