Jak získat id stránky na základě názvu v url

Získat url pomocí id stránky jde poměrně snadno, ale co když se dostanete do situace, že to potřebujte obráceně?

Dostal jsem se do situace, že jsem potřeboval ze sitemapy vyhodit url custom 404 stránky. Vytvořil jsem si totiž přesměrování na stránku, kterou jsem poskládal pomocí Gutenbergu, aby trochu vypadala. Vtipný obrázek, formulář na vyhledávání a odkazy na kategorie produktů.

SEO majstri mi ale hned hodili na hlavu, že je ta stránka v xml sitemap. A že musí pryč.

Na webu byl Yoast SEO a ten má pro vyloučení postů ze sitemapy filter, který jsem chtěl použít. Filter ale přijímá pole id postů.

Což byl problém, protože jsem nechtěl psát podmínky a kontrolovat, zda jsem na develu, nebo produkci a podle toho tam vkládat id stránky (devel obasahem neodpovídal úplně produkci). Věděl jsem ale, že na obou webech bude mít stránka slug „stranka-nenalezena“.

A WordPress má príma funkci, která vám vrátí objekt post, podle jeho slugu – get_page_by_path().

Tahle funkce má tři argumenty get_page_by_path( $path, $output, $post_type ).

První je slug postu – stranka-nenalezena
Druhý je typ vrácené hodnoty – defaultně je to object
Třetí je custom post type – defaultně page

No a výsledek je zde:

add_filter( 'wpseo_exclude_from_sitemap_by_post_ids', function () {

    $ids = array( 12, 13, 14, 4552 );
    $page = get_page_by_path( 'stranka-nenalezena' );
    if ( is_object( $page ) ){
        $ids[] = $page->ID;
    }
    return $ids;
} );

PS: stejně to sem píšu, abych to za půl roku našel :-)

About The Author

Zajímá mne Wordpress, responsivní šablony a zkrátka vše kolem tohoto skvělého redakčního systému.

Související články

Přidejte komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *