使用自定义URL显示badgeOS缩略图的更简单方法

时间:2015-11-19 18:29:11

标签: php arrays wordpress simplify

美好的一天, 我对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行代码。

2 个答案:

答案 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,剩下的就是功能。它似乎运行良好,它肯定会减少代码。非常感谢。 :)