我正在使用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>
答案 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);
}