有没有更有效的循环浏览页面的方法?

时间:2021-02-16 作者:coeyflyer

我有一个网站,它使用一组3幅图像作为其子页面的标题。每个页面都有一组不同的图像。据我所知,实现这一点的最佳方法是在header-subpage.php. 下面是我的代码片段。

<?php
if ( is_page( \'available-homes\' ) ) {
    get_template_part( \'sections/banner-images\', \'available-homes\' );
} elseif ( is_page( \'design-services\' ) ) {
    get_template_part( \'sections/banner-images\', \'design-services\' );
} elseif ( is_page( \'about-us\' ) ) {
    get_template_part( \'sections/banner-images\', \'about-us\' );
} ........

} elseif ( is_page( \'portfolio\' ) ) {                          
    get_template_part( \'sections/banner-images\', \'portfolio\' );
} elseif ( is_page( \'galleries\' ) ) {
    get_template_part( \'sections/banner-images\', \'galleries\' );
} else {
    echo "page images undefined...";
}
有没有更有效的方法让我做到这一点?我仍在学习PHP,但似乎有一种比我所做的更有效的方法来循环页面。

谢谢你的建议。

2 个回复
SO网友:bueltge

替代if... else... 您可以使用控制结构switch 功能。但是如果你使用if... elseif...switch 主要是偏好问题。性能相同。

如果其他

if ($i == 0) {
    echo "i equals 0";
} elseif ($i == 1) {
    echo "i equals 1";
} elseif ($i == 2) {
    echo "i equals 2";
}

开关

switch ($i) {
    case 0:
        echo "i equals 0";
        break;
    case 1:
        echo "i equals 1";
        break;
    case 2:
        echo "i equals 2";
        break;
}
开关盒的作用类似于Elseif控制结构。主要区别在于,可以通过将给定值与一组预定义值进行比较的方式写入Switch Case,而无需评估一组条件。

意见

在我看来,“开关更具可读性,这对于维护也很重要。如果您需要更频繁地检查模板,您应该考虑函数,这样您就不会编写重复代码。

SO网友:Jacob Peattie

我注意到模板名称的第二部分与页面段塞相同。如果是这种情况,那么只需使用page slug作为get_template_part() 而且您根本不需要任何循环、条件或开关:

<?php
$slug = get_queried_object()->post_name;

get_template_part( \'sections/banner-images\', $slug );
如果该段塞的模板不存在,它将返回到sections/banner-images.php.

我们还注意到is_page() 可以检查段塞阵列。

相关推荐

Updating modified templates

我想调整一些。php模板文件在我的WordPress主题中,我知道正确的过程是将相关文件复制到子主题文件夹中并在那里编辑文件,这样我的修改就不会在将来的主题更新中丢失。但这是否意味着我将无法从主题更新中获益,因为我将文件放在了我的子主题文件夹中?这可能不是一件好事,因为主题更新可能添加了一些有用的特性,甚至修复了我最初需要对代码进行调整的问题!这方面的常见解决方案是什么?有人推荐了一款Diff应用程序——这是人们常用的吗?