我正在构建一个Wordpress主题,用户可以选择一些可用的选项。
假设我有一个选项,用户可以从可用选项中选择列宽。在我的page.php中,我正在使用此代码添加类
<div class="<?php if ( my_column_width == '1' ) : ?> full-width
<?php elseif ( my_column_width == '2' ) : ?> one-two
<?php elseif ( my_column_width == '3' ) : ?> one-three">
通常我把它放在一行中,代码只是因为它更容易理解。 我的主题有很多选项,所以那些条件语句真的让我很难阅读我的代码。
有人可以告诉我更好的方法吗?我希望那些使用我的主题的人在阅读我的代码时能够理解逻辑。
答案 0 :(得分:1)
创建一个函数:
function get_my_option_class($width)
{
switch ($witdh) {
case 2:
$class = 'one-two';
break;
case 3:
$class = 'one-three';
break;
case 1:
default:
$class = 'full-width';
}
return $class;
}
然后你会这样做:
<div class="<?= get_my_option_class($my_column_width) ?>">
函数是可重用的,并且比模板中的任何逻辑硬编码要好得多。 如果此代码应该在低于PHP 5.4的PHP上运行,那么最好将最后一行更改为:
<div class="<?php echo get_my_option_class($my_column_width) ?>">
这适用于PHP&lt; 5.4即使short_open_tag
已关闭。
答案 1 :(得分:0)
理想的做法是让switch
为您准备课程,然后将此课程安排到您的代码中。
<?php
switch ($my_col_width) {
case 1:
$class = 'full-width';
break;
case 2:
$class = 'two-cols';
break;
case 3:
$class = 'three-cols';
break;
default:
$class = 'four-cols';
break;
}
?>
<div class="<?php echo $class; ?>">text</div>
其次,单行变体是
<div class="box-<?php echo $my_col_width; ?>">text</div>
答案 2 :(得分:0)
在Wordpress中,您有几个动作挂钩和过滤器。在这种情况下,您可以使用&#34; body_class&#34;过滤。请看下面的例子。
add_filter('body_class', 'my_body_classes_function');
function my_body_classes_function( $classes, $col_width = 0 ) {
// your settings here
switch ($col_width) {
case 1 :
$classes[] = 'my_col1_class';
break;
default :
$classes[] = 'my_default_class';
break;
}
return $classes;
}
将此功能添加到主题的functions.php中,并将以下HTML代码添加到模板中。
<body <?php body_class(); ?>>
您还应该查看wordpress函数参考:http://codex.wordpress.org/Function_Reference/body_class#Add_Classes_By_Filters