Wordpress php: sayfaları ana sayfa çocukları olup olmadığını sınamak için Way?

5 Cevap php

Benim ilk Wordpress sitede Çalışma yüzden bu gerçekten temel bir sorudur eminim. Ben bir sayfa ana sayfa bir çocuk olduğunda, belirli bir eylem gerçekleştiren bir koşullu php açıklama yazmak için mücadele ediyorum.

Örneğin, oldukça sadece aşağıdaki gibi bir sayfa belirlemek yerine, ben bir ebeveyn olarak 'Hakkımızda' sayfası var tüm sayfaları belirtmek istiyorum:

<?php if (is_page('About Us')) echo 'Hello World!'; ?>

Ben "child_of" fonksiyonunu denedim ama ben ümit ediyorum gibi basit değildi.

Ben aşağıda kullandığınızda, bir sözdizimi hatası olsun - muhtemelen sadece bana işlevi kullanmak için nasıl bilmeden:

<?php if (child_of('About Us')) echo 'Hello World!'; ?>

Herhangi bir öneriniz?

5 Cevap

WordPress bir child_of() fonksiyonu olarak böyle bir şey yoktur, çünkü bir hata alıyoruz.

child_of() get_pages () işlevini kullanarak arama bir yoludur.

$pages = get_pages('child_of=##');

# # 'Hakkımızda' sayfasının sayısal kimliği (adı) olduğu.

Lütfen functions.php tema dosyasına aşağıdaki fonksiyonu ekleyin:

function is_tree($pid) {      // $pid = The ID of the page we're looking for pages underneath
    global $post;         // load details about this page
    $anc = get_post_ancestors( $post->ID );
    foreach($anc as $ancestor) {
        if(is_page() && $ancestor == $pid) {
            return true;
        }
    }
    if(is_page()&&(is_page($pid))) 
               return true;   // we're at the page or at a sub page
    else 
               return false;  // we're elsewhere
};

Sonra aşağıdakileri kullanabilirsiniz:

if(is_tree('2')){ // 2 being the parent page id
   // Do something if the parent page of the current page has the id of two
}

Referans: http://codex.wordpress.org/Conditional_Tags

Bu benim için çalıştı son kodu değil - ben yapmaya çalışıyorum ne yapmak doğru yolu ise emin, ama benim aynı soru ile herkesin yararına yayınlayacağız.

Ben sağ sütun bir dizi, sitede (sitenin bir bölümünü temsil eden her ana sayfa) bir bölümüne her özel zorunda.

Ben ana sayfa ve ebeveynin çocuk tüm sayfaları aynı spesifik sağ sütun çekmek istiyorum.

İşte ne yaptım:

<?php 

if (is_page('Page Name 1') || $post->post_parent == '##') {
include (TEMPLATEPATH . '/right-1.php');

} elseif (is_page('Page Name 2') || $post->post_parent == '##') {
include (TEMPLATEPATH . '/right-2.php');

} elseif (is_page('Page Name 3') || $post->post_parent == '##') {
include (TEMPLATEPATH . '/right-3.php');

} elseif (is_page('Page Name 4') || $post->post_parent == '##')
include (TEMPLATEPATH . '/right-4.php');

?>

# # Sayfanın ID # temsil etmektedir.

Bu kod bir kimse Alernative için merak olduğunu örtmek, beni çocuklar için sorun çözüldü:

<?php
    global $post;
    if ($post->post_parent == 9) {

        echo 'blah blah';

}; ?>

"9" ana sayfasının kimliği.

Eğer çocuğun sayfasından ana sayfaya link istiyorum basit bir çözüm; Orada biri ya da bir yok eğer sıfır ise $ post-> post_parent bir sayfanın ebeveyn kimliği tutar:

<?php
if($post->post_parent !== 0){               
    print '<a href="'.get_permalink($post->post_parent).'">&larr; Back</a>';    
}
?>

yani bu durumda eğer $ post-> post_parent == $ id_of_about_page kontrol if () değiştirmek isterim.