Monthly Archives: Leden 2009

8 years, 4 months ago 0
Posted in: WordPress

Problém

Chceme zobrazit nějaký konkrétní obsah na stránce a všech jejích potomcích. Například obrázek, který bude shodný pro všechny stránky, které tématicky zapadají do jedné kategorie webu. To znamená na rodičovské stránce a zároveň všech jejích podstránkách.

Řešení

Nejdříve je třeba vyrobit funkci, která zjistí kořenového rodiče podstránky. Tu vložíme do souboru functions.php. Vypadat bude následovně:

 

function get_root_parent($page_id)
{
    global $wpdb;
    $parent = $wpdb->get_var("SELECT post_parent FROM $wpdb->posts WHERE post_type='page' AND ID = '$page_id'");
    if ($parent == 0)
        return $page_id;
    else
        return get_root_parent($parent);
}


Rekurzivně projde všechny rodiče až po toho posledního, kořenového.

A nakonec v místě, ve kterém chceme v šabloně zobrazovat obsah zavoláme s příslušným IDčkem nějakou podobnou konstrukci

 

<?php if ($post->ID == 4 || get_root_parent($post->ID) == 4) { ?>
// obsah
<?php } ?>