Vyhledávání – vlastní typy obsahu

Úvodní stránka Fórum podpory WordPressu Problémy s WordPressem Vyhledávání – vlastní typy obsahu

Zvolené téma obsahuje celkem 8 odpovědí. Do diskuze (3 účastníci) se naposledy zapojil uživatel  zmesa47 a poslední změna je stará 12 let, 4 měsíce.

Aktuálně je na stránce zobrazeno 9 příspěvků - 1. až 9. (z celkem 9)
  • Autor
    Příspěvky
  • #1296

    zmesa47
    Participant

    Zdravím,

    na webu jsou nadefinované celkem 4 vlastní typy obsahu. Výchozí vyhledávání hledá všude, včetně těchto vlastních typů.

    Potřeboval bych omezit vyhledávání ve stránce jen na založené stránky a příspěvky – tak, aby do výsledků hledání vlastní typy obsahu nebyly zahrnuty.

    Pomocí:

    function excludePages($query) {
    if ($query->is_search) {
    $query->set('post_type', 'page');
    }
    return $query;
    }
    add_filter('pre_get_posts','excludePages');

    jsem sice “donutil” WP hledat jen na stránkách, ale již se mi nepodařilo aby do hledaní byly zahrnuty i příspěvky.

    Nebyl by náhodou nějaký nápad?

    Děkuji

    #9962

    neteyescz
    Participant
    #9963

    admin
    Keymaster
    Web

    zmesa47: Pěkné, chválím využití filtru pre_get_posts.

    Podle mě stačí jediná drobná změna, a to upravit řádek, kde definujete použité vlastní typy obsahu:

    $query->set( 'post_type', array( 'post', 'page' ) );

    Netestováno…

    #9964

    neteyescz
    Participant

    Pak jde ještě různě pomocí snippů separovat kategorie apd.

    #9965

    zmesa47
    Participant

    Díky oběma.

    $query->set( ‘post_type’, array( ‘post’, ‘page’ ) ); – takto nějak jsem to myslel. Zkusil jsem a funguje to – vyhledávání jde jen po stránkách a příspěvcích.

    Bohužel to má i chybku: na webu je použit i WPML a ten teď u drobečkové navigace vypisuje:

    Warning: Illegal offset type in isset or empty in cesta k souborumwp-includesquery.php on line 1875

    Tato chybka je jen na stránce vyhledávání (search.php)

    Netuším co tam je špatně nebo co je prázdné.

    #9966

    admin
    Keymaster
    Web

    Možností máte několik:

    1) Odstranit drobečkovou navigaci z výsledků vyhledávání (logicky tam ani není moc potřeba).

    2) Pokud jste definoval své vlastní typy obsahu, tak nastavte argument exclude_from_search u funkce register_post_type() na hodnotu true. Tím vcelku jednoduše vyloučíte konkrétní vlastní typ obsahu z výsledků vyhledávání.

    3) Dále můžete zkusit použít jiný filtr, např. the_search_query (příklad). Tím vyloučíte případný konflikt s WPML u filtru pre_get_posts (u něj ale ještě můžete zvýšit či snížit prioritu, což by také mohlo pomoci).

    4) A nakonec můžete zkusit přidat skryté pole přímo do vyhledávacího formuláře (obvykle soubor searchform.php v adresáři šablony), což by mohlo také pomoci (zdroj).

    <input type="hidden" name="post_type" value="post,page" />

    #9967

    zmesa47
    Participant

    Díky,

    přesně takto jsem potřeboval nakopnout :-)

    1) takto bylo vyřešeno s tím, že pokud je zobrazena stránka vyhledávání, tak není navigace, ale jen odkaz na home

    2) “exclude_from_search” jsem přehlédl v dokumentaci – díky za připomenutí funkce – doplním do definice vlastních typů

    3) zkusím prostudovat

    4) toto jsem ještě nezkoušel

    Ještě jednou děkuji za skvělou pomoc.

    #9968

    admin
    Keymaster
    Web

    A když WPML deaktivujete, tak předchozí postup funguje bez problémů?

    Každopádně dejte prosím vědět, jak to celé dopadlo, respektive který způsob nakonec fungoval…

    #9969

    zmesa47
    Participant

    Tak jsem to testoval:

    – když je WPML deaktivován, tak funce je OK a bez chyb

    – skryté pole u vyhledávacího formuláře nepomohlo

    – “exclude_from_search” je to správné řešení – po přidání již daný typ obsahu již není ve výsledcích

    Výsledek:

    – přidání “exclude_from_search” ke všem vlastním typům obsahu

    – na stránce výsledků vyhledávání odstraněna navigace od WPML a nahrazena odkazem na home

    – výše uvedený filtr “pre_get_posts” již není potřeba

Aktuálně je na stránce zobrazeno 9 příspěvků - 1. až 9. (z celkem 9)

Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.

WordPress – novinky, návody a zajímavosti