更好的方法是通过php基于类别页面将wordpress类别类添加到特定div

时间:2018-01-29 15:40:46

标签: php wordpress

为了更好地理解如何有效地使用php,我想知道是否可以通过php将wordpress类别添加到单页模板上的特定div。

我已经完成了这项工作,通过下面的函数将类别添加到body类:

// add category nicenames in body and post class
add_filter( 'body_class', 'add_category_to_single' );

function add_category_to_single( $classes ) {
    if ( is_single() ) {
        global $post;
        foreach ( ( get_the_category( $post->ID ) ) as $category ) {
            // add category slug to the $classes array
            $classes[] = $category->category_nicename;
        }
    }
    // return the $classes array
    return $classes;
}

我还通过下面的php片段在技术上完成了这项工作(还有大约15个未显示):

<?php if (is_category('building-products')){
    echo '<div class="heading-container building"><div class="nhs-heading"><h1 id="pageName" class="entry-title">Building Products</h1></div></div>';
    } elseif (is_category('emergency-prepardness')) {
    echo '<div class="heading-container emergency"><div class="nhs-heading"><h1 id="pageName" class="entry-title">Emergency Preparedness</h1></div></div>';
    } else (is_category('energy-efficient-and-eco-friendly')) {
    echo '<div class="heading-container energy"><div class="nhs-heading"><h1 id="pageName" class="entry-title">Energy Efficient & Eco Friendly</h1></div></div>';
    } ?>

但是为了更好地理解如何有效地使用php,有一种更清晰,更有效的方法来检测身体是否具有特定的类(例如构建产品),然后将相同的类别添加到heading-container div或者是以上片段是通过php的唯一途径吗?

任何指向更好方法的资源都将非常感激。

谢谢,

1 个答案:

答案 0 :(得分:0)

你可以用一个基本的数组映射来做,而不是有大量的if。

这是一个示例

$categoryToElement = [
    "building-products" => [
        "label" => "Building Products",
        "class" => "building"
    ],
    "emergency-prepardness" => [
        "label" => "Emergency Preparedness",
        "class" => "emergency"
    ],
    "energy-efficient-and-eco-friendly" => [
        "label" => "Energy Efficient & Eco Friendly",
        "class" => "energy"
    ],
]

现在你已经有了映射。我想你可以使用getCategory()方法获得项目的类别。 就这样做:

$category = $this->getCategory();
    echo '<div class="heading-container '.$categoryToElement[$category]['class'].'"><div class="nhs-heading"><h1 id="pageName" class="entry-title">'.$categoryToElement[$category]['label'].'</h1></div></div>';

这样,您就可以更清楚地了解正在发生的事情,以及一目了然的变化。

希望这会有所帮助。