我正在学习,因为我走到这里并希望更好地了解如何在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();
}
?>
任何帮助将不胜感激!谢谢!
答案 0 :(得分:1)
:
<?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我们如何到达答案。