How to separate the tags?

时间:2014-06-25 作者:user32447

好的,我已经找过了,找不到。以下是我正在努力实现的目标。

我想把我帖子中的标签分开。例如,我想在帖子中显示第一个标记,但当您将鼠标悬停在“更多”按钮上时,会显示所有其他标记。现在我可以处理css和菜单了,但是如何将标签分开,比如将第一个标签放在一个div中,其余的放在另一个div中,该div除了悬停外是隐藏的。

enter image description here

在上面的照片中,我希望其他标签悬停在“+”按钮上时出现。

<?php the_tags( __( \'<span class="tag-links">Tags: \', \'wpbx\' ), ", ", "</span>\\n" ) ?>

3 个回复
最合适的回答,由SO网友:Gioia Fueter 整理而成

您需要使用另一个函数来获取标记,这些标记返回一个对象或数组,您可以根据需要对其进行操作。

http://codex.wordpress.org/Function_Reference/get_tags

<?php $my_tags = get_the_tags();?>
然后在需要第一个标记的位置:

<?php echo $my_tags[0]->name?>
用于循环除第一个标记外的其余标记:

<?php $count=1;
foreach ($my_tags as $my_tag) {
    if ($count != 1) {?>
        <li>
            <a href="<?php echo get_tag_link($my_tag->term_id);?>">
                <?php echo $my_tag->name?>
            </a>
        </li>   
    <?php }
    $count++;
}?>
希望有帮助!

SO网友:RachieVee

嗯,我的例子是基于Gioia已经提供的内容和Codex上的例子here.

还有一个提示,如果要坚持使用WordPress编写PHP,请避免使用速记WordPress\' best practices, 所以您总是想写出开头的PHP标记。

我想为第一个标记打破foreach,这样您就可以为剩余的标记创建一个无序列表,并希望能够更轻松地使用CSS进行样式设计。如果有人有更好的方法,请告诉我。以下是我所拥有的:

<?php 
$posttags = get_the_tags();
$count = 0;
if ( $posttags ) {
    foreach( $posttags as $post_tag ) { 

        $count++; //add to counter
        $tag_id = $post_tag->term_id; //get tag id so we can use it for a tag link

        if ( 1 == $count ) {
            echo \'<a href="\' . get_tag_link($tag_id) . \'" class="first-tag">\' . $post_tag->name . \'</a>\';
        } //end of first tag if statement 
        break;// break out of this for each so we can use a ul to separate the tags after the first
    } //end of for each ?>

    <ul class="remaining-tags">
        <?php foreach( $posttags as $remaining_tag ) { 
            $count++; //add to counter
            if ( 2 != $count ) { 
                echo \'<li><a href="\' . get_tag_link($tag_id) . \'">\' . $remaining_tag->name . \'</a></li>\';
            } // end of if statment for tags after first one
        } //end of for each ?>
    </ul>
<?php } //end of if $posttags ?>
我在这里和这个缩进作斗争,如果你读起来有困难,请告诉我。希望能有点帮助。这也应该在循环中起作用。

SO网友:RachieVee

这是我从其他人那里得到的另一个解决方案,我知道哪里的计数器较少,使用较少unset 相反这只是实现我提供的相同功能的另一种方法,但PHP行数较少。此外,如果您想在模板中的其他地方获取该变量/值,那么unset可能是危险的,因此只有当它适合您的情况时,它才适合您。

<?php 
        $posttags = get_the_tags();
        $count = 0;
        if ( $posttags ) {
            foreach( $posttags as $key => $post_tag ) {
            $tag_id = $post_tag->term_id; //get tag id so we can use it for a tag link

            if ( 0 === $count ) {
                echo \'<a href="\' . get_tag_link($tag_id) . \'" class="first-tag">\' . $post_tag->name . \'</a>\';
                unset( $posttags[$key] ); //using unset the destroy the variable, unset should only be used if you\'re not planning to use this first tag anywhere else in the template
                break;// break out of this for each so we can use a ul to separate the tags after the first
            } //end of first tag if statement
        } //end of for each ?>

            <ul class="remaining-tags">
                <?php foreach( $posttags as $remaining_tag ) {
                    echo \'<li><a href="\' . get_tag_link($tag_id) . \'">\' . $remaining_tag->name . \'</a></li>\';
                } //end of for each ?>
            </ul>
        <?php } //end of if $posttags ?>

结束

相关推荐

Get tags for post_type

我有几个自定义的帖子类型,它们都共享相同的标签。在每个自定义帖子类型的存档上,我想显示使用的标签列表,以及与每个相关的帖子数量。get_tags() 默认情况下,从整个网站内容中提取其所有信息。我找不到get_tags() 函数,我不想执行和密集的查询/函数来手动计数和限制。