Jquery Portfolio Wordpress标签按类别

时间:2014-04-08 12:33:56

标签: php jquery wordpress

我正在使用jquery制作可过滤的投资组合。我有不同的类别,我收到一个类别中的所有帖子,然后按标签排序。这适用于一个单词标签,但当标签不止一个单词时它不起作用。如何使用多个单词标签?

我的代码:

    <div class="tagwrapper">
    <div class="posttags">
        <?php
        query_posts('category_name=Sport');
        if (have_posts()) : while (have_posts()) : the_post();
            $posttags = get_the_tags();

            // print_r($posttags);
            // echo gettype($posttags);
            if ($posttags) {
                foreach($posttags as $tag) {
    //                echo gettype($tag);
                    //echo $tag->name;
                    $all_tags_arr[] = $tag -> name; //USING JUST $tag MAKING $all_tags_arr A MULTI-DIMENSIONAL ARRAY, WHICH DOES WORK WITH array_unique
                }                    
            }

        endwhile; endif; 
            $unique_tags_arr = array_unique($all_tags_arr); //REMOVES DUPLICATES

        if ($unique_tags_arr) {
            echo '<ul class="jquery">';
            echo '<li data-filter=".filterable">';
            echo "Alle";
            echo '</li>';
            foreach ($unique_tags_arr as &$value) {
                echo '<li data-filter=".'.$value .'"> '.$value.'</li>'; 

            }
            echo '</ul>';
        }
        ?>
    </div>

    <div id="news">
        <?php          

         while (have_posts()) : the_post();
                    //generate the article list for all articles within the sports category
                    //the $tags_class variable is a whitespace delimited string of tags for this post

                    //print_r($value);
                    $posttags = get_the_tags();

                    echo '<article class="filterable ';
                    if ($posttags) {
                      foreach($posttags as $tag) {
                        echo $tag->name . ' '; 
                      }                   
                    } 
                    echo '">';
                    ?>


                    <h3> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
                    <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(); ?> </a>

                    <?php echo '</article>'; ?>

                <?php endwhile; ?> 
    </div>
</div>

1 个答案:

答案 0 :(得分:0)

原因是因为$value可以是带有空格的字符串,例如my cool category。而且,可过滤规则集不是为了将空格处理为1值而构建的。你真正想要的是检查字符串中的空格,然后用-替换它。

if(preg_match('/\s/', $value) $value = str_replace(" ", "-", $value);

然后你会得到:

my-cool-category

您还需要在以下代码中进行此修改:

foreach($posttags as $tag) {
    if(preg_match('/\s/', $tag) $tag = str_replace(" ", "-", $tag);
}