检查是否在特定页面的子页面上

时间:2014-11-24 作者:user1752759

我试图输出一个标志,这取决于正在查看的页面。

<?php if ( is_page(\'home\') || is_page(\'services\') ) { ?>
    <div class="col-md-2 col-sm-4">
        <?php ci_e_logo(\'<h1 class="logo \' . get_logo_class() . \'">\', \'</h1>\'); ?>
    </div>
<?php } 
else { ?>
    <div class="col-md-2 col-sm-4">
        <h1 class="logo imglogo">
            <a href="http://websiteaddress.com">
                <img src="<?php echo get_bloginfo(\'template_directory\');?>/images/picturehere.png" alt="title here"></a>
            </h1>
    </div>
<?php } ?>
上面的代码运行良好,但如何在“服务”的子页面上应用徽标图像交换?

7 个回复
最合适的回答,由SO网友:user1752759 整理而成
<?php 
global $post;

if ( is_page(\'home\') || is_page(\'services\') ) { ?>
    <div class="col-md-2 col-sm-4">
        <?php ci_e_logo(\'<h1 class="logo \' . get_logo_class() . \'">\', \'</h1>\'); ?>
    </div>
<?php } 

elseif ( preg_match( \'#^service(/.+)?$#\', $wp->request ) ) { ?>
    <div class="col-md-2 col-sm-4">
        <?php ci_e_logo(\'<h1 class="logo \' . get_logo_class() . \'">\', \'</h1>\'); ?>
    </div>
<?php
}

else { ?>
    <div class="col-md-2 col-sm-4">
        <h1 class="logo imglogo">
            <a href="<?php echo esc_url( home_url( \'/\' ) ); ?>">
                <img src="<?php echo get_bloginfo(\'template_directory\');?>/images/picturehere.png" alt=""></a>
            </h1>
    </div>
<?php } ?>
SO网友:Robert hue

你可以用$post->post_parent. 您必须检查子页面的父页面是否为服务页面。这就是你要检查它的方式。

我以为123 下面的代码是您的服务页面的页面ID。将其替换为实际ID。

if ( 123 == $post->post_parent ) { ?>
    <div class="col-md-2 col-sm-4">
        <?php ci_e_logo(\'<h1 class="logo \' . get_logo_class() . \'">\', \'</h1>\'); ?>
    </div>
<?php }

SO网友:Ankit Panchal

您可以使用此方法获取帖子页面/帖子名称。

$parent = array_reverse(get_post_ancestors($post->ID));
$page_parent = get_post($parent[0]);
echo $page_parent->post_name;
您可以根据需要使用该条件。

SO网友:honk31

与Robert Hue的回答相同,此解决方案将获得父元素的ID:

echo get_post_field( \'post_parent\' );
第二个参数是可选的,可以保存一个ID(用于在循环之外或要查询特定元素的父元素时)

$post_ID = 666;
echo get_post_field( \'post_parent\', $post_ID );
此函数可以从post表中获取任何字段,如post slug、status、type。。。请参见docs 对于所有可用字段。

在您的情况下,函数如下所示:

if ( get_post_field( \'post_parent\' ) === 9 ) :
    //child of page ID 9
endif;

SO网友:Loai Abdelhalim

使用get_post_ancestors($post). 如果当前显示的帖子是父页面的子页面,它将返回一个数组。

SO网友:Paris Koutroumanos

Try this

if ( wp_get_post_parent_id( get_the_ID() ) != 0 ) {
    echo \'I am a child page\';
    // your code
}
SO网友:Fabio Manzo

$post_current = get_post();

$args = array(
        \'post_parent\' => $parent_id, // the ID of the parent
        \'posts_per_page\' => -1,
        \'post_type\' => \'page\',

);
$children = get_posts($args);

$is_child = false;

foreach ($children as $f) {
    if ( $f->ID == $post_current->post_parent ) {
        // it\'s a child 
        $is_child = true;
        break;
    }
}

if ($is_child) {
    // I\'ts a child...
} else {
    // It is not a child...
}

结束

相关推荐

Setting pages for posts

这是我的json rest api函数。调用时,它会返回24条帖子,但总数要多得多。如何分页响应,以便使用以下内容更改页面?page=2 添加到curl请求路由。public function posts(){ $args = array( \'posts_per_page\' => 24, \'offset\' => 0, \'meta_key\' => $met