-1

我在这里学习并希望更好地了解如何在 WordPress 中处理有关是否设置父级的 if 语句。

我正在尝试做的事情:

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

我想要它做什么:

如果未设置父级,则回显 home_url()。如果没有设置 Parent,这将默认为主页 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();
    }
?>

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

4

1 回答 1

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

PS可能有一种更清洁的方法来做到这一点,但现在,就是这样。

更新:请检查讨论日志以了解我们如何得出答案。

于 2013-08-13T15:54:12.830 回答