2

私の最初のWordpressサイトに取り組んでいるので、これは本当に基本的な質問だと確信しています. ページが親ページの子である場合に特定のアクションを実行する条件付き php ステートメントを書くのに苦労しています。

たとえば、以下のように 1 つのページだけを指定するのではなく、「About Us」ページを親として持つすべてのページを指定したいと思います。

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

「child_of」関数を試してみましたが、思ったほど簡単ではありませんでした。

以下を使用すると、構文エラーが発生します。おそらく、関数の使用方法がわからないだけです。

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

助言がありますか?

4

5 に答える 5

5

Add the following function to your functions.php theme file:

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
};

Then you can use the following:

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
}

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

于 2010-06-06T12:26:54.927 に答える
3

child_of()WordPress には関数のようなものがないため、エラーが発生します。

child_of()get_pages() 関数を使用して検索する方法です。

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

ここで、## は「About us」ページの数値 ID (名前ではない) です。

于 2009-05-21T03:24:26.317 に答える
0

これは私のために働いた最後のコードです-それが私がやろうとしていることをするための適切な方法であるかどうかはわかりませんが、私の同じ質問を持つ人の利益のために投稿します。

右側の列のセットがあり、それぞれがサイトのセクションに固有です(各親ページはサイトのセクションを表します)。

親ページとその親のすべての子ページで、同じ特定の右側の列をプルする必要があります。

これが私がしたことです:

<?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');

?>

ここで、##はページのID#を表します。

于 2009-05-21T04:34:07.297 に答える
0

このコードは、誰かが別の方法を考えている場合に備えて、私の問題を解決しました:

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

        echo 'blah blah';

}; ?>

「9」は親ページのIDです。

于 2013-02-07T09:18:06.640 に答える