如何根据正在设置的post_parent设置链接 - WordPress

时间:2013-08-13 14:47:15

标签: php wordpress parent

我正在学习,因为我走到这里并希望更好地了解如何在WordPress中处理关于父设置与否的if语句。

我正在尝试做什么:

我正在尝试根据为“页面属性”部分中的页面设置的父项设置元素的URL。按照目前的情况,如果为页面设置了父级,它将根据父级的主页更新href值。但是,如果未设置父级,则会将页面URL填充为父级。

我想要它做什么:

如果未设置父级,则回显home_url()。如果没有设置父级,这将默认为主页URL。

原始版本:

<?php $permalink = get_permalink($post->post_parent); ?>

较新的版本(需要使用TLC):

PHP:
<?php 
    if ($post->post_parent) {
        $permalink = echo get_permalink($post->post_parent);
    } else {
        $permalink = home_url();
    }
?>

HTML:
<a href="<?php echo $permalink; ?>">Example</a>

目前,它不适用于else语句。如果我尝试为else语句回显任何类型的文本,它会将它附加到我正在主动查看的页面设置的虚拟URL。

我需要执行的功能:

<?php
    if (a page/post has a parent set within the page attribute) {
        $permalink = echo get_permalink($post->post_parent);
    } else (if a page/post does not have a parent set within the page attribute) {
        $permalink = echo home_url();
    }
?>

任何帮助将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:1)

PHP上的

<?php 
    the_post(); 
    if(count(get_pages('child_of='.$post->ID))!=0){ 
        if($post->post_parent!=0) { 
            $permalink = get_permalink( end( get_ancestors( get_the_ID(), 'page' ))); 
        } else if ($post->ID==0) { 
            $permalink = home_url(); 
        } else { 
            $permalink = get_permalink(); 
        } 
    } else { 
        $permalink = home_url(); 
    }
?>

如果你不希望页面搞乱,你应该在equals =之后删除echo。

然后您就可以在变量$permalink上获得所需的值。

P.S。可能有一个更清洁的方法来做到这一点,但现在,这是。

更新:请检查discussion logs我们如何到达答案。