总之,有一个电影评论网站,我给它打分。目前我正在使用一个工作正常的小部件。。。但是我把我所有的分数都改成了五星评级系统(3.5/5、5/5等),所以使用它的小部件根据百分比填充进度条(70分将填充70%的进度条等等),现在只显示该进度条的3.5%。
我想做的是使用字体为awesome的星星,而我在我的网站上确实有这样的字体。
但是我在修改小部件代码以满足我的新需求方面遇到了困难。
我想知道我是否需要为每一个都做一个案例,或者是否有更简单的方法?我所说的“case”是指(我是用英语而不是代码说的)“如果电影的分数是1/5,那么显示一个满星,然后显示四个空星。”等等或者,有没有一种方法可以根据我动态生成的分数显示字体awesome stars?
如果有帮助,我的小部件代码如下:
<?php
global $wp_query;
$postid = $wp_query->post->ID;
if( get_post_meta($postid, \'RankVideo\', true)) {
echo \'<div class="bar_mortice rounded"><div class="progress rounded" style="width: \' . get_post_meta($postid, \'RankVideo\', true) . \'%"></div></div>\';
} elseif( get_post_meta($postid, \'ecpt_rankvideo\', true)) {
echo \'<div class="bar_mortice rounded"><div class="progress rounded" style="width: \' . get_post_meta($postid, \'ecpt_rankvideo\', true) . \'%"></div></div>\';
}
?>
因此,基本上,我正在寻找对上述小部件代码的必要编辑,以使其显示基于五星评级系统的星形字体可怕图标,而不是我之前使用的base 100系统。
有意义吗?
SO网友:Matt Royal
这更多的是我收集到的PHP问题,但希望这将有助于或至少让您走上正轨。我在这里做了一些假设,比如你已经打电话给FontAwesome并在你的网站上工作了。
我也不知道为什么你有2个get_post_meta();
条件语句中的函数对每个条件都有相同的输出,这对我来说没有意义,但我已经按照您在下面的示例代码中的方式将其包括在内。
你可以试试这个,我添加了一些注释,这样你就可以理解其中的逻辑:
<?php
global $wp_query;
$postid = $wp_query->post->ID;
if( get_post_meta($postid, \'RankVideo\', true)) {
$metabox_value = get_post_meta($postid, \'RankVideo\', true);
// Evaluates the string and converts it to integar or float value
if ( strpos( $metabox_value, \'.\' ) === false ) {
$ranking = (int)$metabox_value;
} else {
$ranking = (float)$metabox_value;
}
if( is_float( $ranking ) ) { // Check to see if whole number or decimal
$rounded_ranking = round($ranking); // If decimal round it down to a whole number
echo \'<div class="bar_mortice rounded">\';
// For Loop so we can run the stars as many times as is set, with offset of 2 to because we adding half star statically adter our For loop
for ($counter=2; $counter <= $rounded_ranking; $counter++){
echo \'<i class="fa fa-star"></i>\';
}
echo \'<i class="fa fa-star-half-o"></i><div>\'; // Static half star used as the ranking value is a decimal and the is_float condition is met.
}
else {
echo \'<div class="bar_mortice rounded">\';
// For Loop so we can run the stars as many times as is set, no offset need, as no half star required for whole number rankings
for ($counter=1; $counter <= $ranking; $counter++){
echo \'<i class="fa fa-star"></i>\';
}
}
}
elseif( get_post_meta($postid, \'ecpt_rankvideo\', true)) {
$metabox_value = get_post_meta($postid, \'ecpt_rankvideo\', true);
// Evaluates the string and converts it to integar or float value
if ( strpos( $metabox_value, \'.\' ) === false ) {
$ranking = (int)$metabox_value;
} else {
$ranking = (float)$metabox_value;
}
if( is_float( $ranking ) ) {
$rounded_ranking = round($ranking);
echo \'<div class="bar_mortice rounded">\';
for ($counter=2; $counter <= $rounded_ranking; $counter++){
echo \'<i class="fa fa-star"></i>\';
}
echo \'<i class="fa fa-star-half-o"></i><div>\';
}
else {
echo \'<div class="bar_mortice rounded">\';
for ($counter=1; $counter <= $ranking; $counter++){
echo \'<i class="fa fa-star"></i>\';
}
}
}
?>