美好的一天, 我对php的有限知识最终造成了一堆怪异的代码。我希望有人能告诉我一个更简单,更清洁的方法来实现这一目标。不幸的是,我真的真的不好用php。
我想要完成的事情
我正在尝试为我的Wordpress网站的一些badgeOS图标编码,这些图标链接到相应的课程帖子。换句话说,badge_post_id中的缩略图应链接到特定的lesson_post_id。徽章缩略图还需要具有不同的外观以获得'并且'未经证实的'。
我有以下每个徽章缩略图使用的代码:
<!-- Badge must either be marked earned or unearned -->
<?php if (in_array($badge_post_id, $earned_achievements)) {
$css_class = 'earned-badge'; }
else {
$css_class = 'unearned-badge'; }
?>
<!-- Each badge requires this code -->
<span id="lesson-#" class="badge-class">
<a href="http://example.com/?p=$lesson_post_id" class="badge-link">
<span class="badge-icon">
<?php echo badgeos_get_achievement_post_thumbnail($badge_post_id, $image_size, $css_class) ;?>
</span>
<span class="badge-name"> LESSON TITLE </span>
</a>
</span>
我也在页面开头使用它:
<!-- Everything gets this -->
<?php
$image_size = array(100,100);
$earned_achievements = badgeos_get_user_earned_achievement_ids(get_current_user_id());
?>
正如您所看到的,对于30多个徽章,这是一个代码的TON,并且是一个非常令人头疼的问题。
理想情况下,它会从某种表(可能是某种数组)中提取所有需要的信息,这些表与所有这些信息相关:
课程编号:$badge_post_id, $lesson_post_id, $lesson_title, $css_class
(获得或未获得)
因此,我可以输入更简单的人来获取每个徽章,而不是添加100行代码。
答案 0 :(得分:1)
这样的东西?
LC_ALL
$ badges可能是db表的原始抓取,其中包含列id,lesson_id,lesson_title以及您需要的任何其他内容。
答案 1 :(得分:0)
@ hendr1x 你的帮助让我得到了这个解决方案!我没有在数组或表中输入数据只使用一次,而是使用您的代码并将其作为函数放置。
function badgeosm($lesson_id, $badge_id){
$image_size = array(100,100);
$earned_achievements = badgeos_get_user_earned_achievement_ids( get_current_user_id() );
$css_class = 'unearned-badge'; // Set unearned-badge as the default.
if (in_array($badge_id, $earned_achievements)) {
$css_class = 'earned-badge';
}
echo '<span id="lesson-ID-'.$lesson_id.'" class="badge-class">';
echo '<a href="http://example.com/?p='.$lesson_id.'" class="badge-link">';
echo '<span class="badge-icon">';
echo badgeos_get_achievement_post_thumbnail( $badge_id, $image_size, $css_class );
echo '</span>';
echo '<span class="badge-name">';
echo get_the_title( $lesson_id );
echo '</span>';
echo '</a>';
}
badgeosm(1961,1770);
现在我只输入课程和徽章的ID,剩下的就是功能。它似乎运行良好,它肯定会减少代码。非常感谢。 :)