为了更好地理解如何有效地使用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的唯一途径吗?
任何指向更好方法的资源都将非常感激。
谢谢,
答案 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>';
这样,您就可以更清楚地了解正在发生的事情,以及一目了然的变化。
希望这会有所帮助。