回应WordPress中PARENT页面的副标题 - 第(2)部分

时间:2013-08-13 19:55:34

标签: php wordpress

原始主题: Echo the subtitle of a PARENT page within WordPress?

我发现了对上面原始主题产生的代码Mark的单独需求。幸运的是,我能够与另一个社区成员合作,以实现类似的功能来处理该问题所涉及的相同元素的href。

我需要根据父页面的字幕值填充标题标记。但是,如果没有设置父级,我需要它默认为整个站点的默认子标题。

我们可以在这里为href属性实现此目的:How to set a link based off a post_parent being set - WordPress

当前代码以这种方式处理:

<?php
    if ($post->post_parent) {
        $permatitle = get_post_meta($post->post_parent, '_base_page_subtitle', true);
    } else {
        $permatitle = get_post_meta($post->ID, '_base_page_subtitle', true);
    }
?>

<a href="<?php echo $permalink; ?>" title="<?php echo $permatitle; ?>">

但是,我也需要它来处理子页面。任何帮助将不胜感激,我会赞成任何有助于解决这个问题的人。

1 个答案:

答案 0 :(得分:1)

如果你想要达到同样的目的(refer here),但这次是为了标题,

你可以这样做:

<?php
if ($post->post_parent!=0) {
    // for child pages
    $permatitle = get_post_meta(end( get_ancestors( get_the_ID(), 'page' )), '_base_page_subtitle', true); 
} elseif($post->ID==0||count(get_pages('child_of='.$post->ID))==0) { 
    //for HP or pages with no child
    $permatitle = get_post_meta(get_option( 'page_on_front' ), '_base_page_subtitle', true); 
} else { 
    // for top level pages/parents
    $permatitle = get_post_meta($post->ID, '_base_page_subtitle', true); 
} 

或更好,将两者结合起来:

<?php 
if ($post->post_parent!=0) {
    // Handling of Child Pages
    $permalink = get_permalink( end( get_ancestors( get_the_ID(), 'page' )));
    $permatitle = get_post_meta(end( get_ancestors( get_the_ID(), 'page' )), '_base_page_subtitle', true); 
} elseif($post->ID==0||count(get_pages('child_of='.$post->ID))==0) {
    // Homepage or Pages with no Parent
    $permatitle = get_post_meta(get_option( 'page_on_front' ), '_base_page_subtitle', true);
    $permalink = home_url();
} else { 
    // Handling of Top Level/Parent Pages
    $permatitle = get_post_meta($post->ID, '_base_page_subtitle', true);
    $permalink = get_permalink( end( get_ancestors( get_the_ID(), 'page' )));
}

然后您可以在以下情况之后执行此操作:

<a href="<?php echo $permalink; ?>" title="<?php echo $permatitle; ?>">