1

我使用以下代码尝试显示随机标签列表:

<?php wp_tag_cloud('smallest=10&largest=10&number=5&format=list&order=rand&orderby=count'); ?>

这确实显示了 5 个标签的列表,但顺序不是随机的,并且在我重新加载页面时不会改变。

关于如何实现这一目标的任何帮助?

非常感谢。

4

1 回答 1

5

今晚我自己在寻找这个问题的答案,我想我会发布一个解决方案。

我的要求是在每次页面刷新时显示随机标签以及排除某些标签的能力。出于我的目的,我把它放在 functions.php 中,因为我讨厌用函数把我的模板文件弄得乱七八糟。

函数- 将其插入您的 functions.php 文件中

function jr_get_tags_but_exclude() {
    $args = array('exclude' => '36 17'); // see notes below
        $alltags = get_tags( $args );
        shuffle($alltags);
        $count=0;
        if ($alltags) {
            foreach($alltags as $tag) {
                $count++;
                echo '<a href="'.get_tag_link($tag->term_id).'">'.$tag->name.'</a>';
        if( $count >19 ) break;
        }
    }
}

呼叫- 将其插入您的模板页面

<?php jr_get_tags_but_exclude(); ?>

笔记

  • 要排除标签,您将需要标签 ID。获取 ID 的最简单方法是转到帖子 -> 标签并将鼠标悬停在要排除的标签上。例如,将鼠标悬停在浏览器底部的 url 栏中会显示 ID # &tag_ID=9

  • Wordpress codex forget_tags说只用空格分隔每个标签 ID,不需要逗号。

  • 关于随机化结果,不幸rand的是,这不是一个可用的选项或$argfor 。get_tags

  • 要更改显示的标签数量,请调整if ( $count >19 )19 = 20 个标签、29 = 30 个等。

  • shuffle($alltags);随机化是什么

  • $count=0;启动计数器,$count++;计算每个发布的标签,if( $count >19 ) break;结束循环,在这种情况下,发布了 20 个标签。

学分和参考

主要基于这些绅士的解决方案

  1. wordpress 随机标签问题

  2. https://wordpress.stackexchange.com/questions/26112/how-to-limit-and-display-tag

  3. http://wordpress.org/support/topic/php-exclude-tag

get_tags 的 wordpress 法典

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

在您的模板文件中- 不需要任何功能

<?php
    $args = array('exclude' => '36 17'); // see notes below
        $alltags = get_tags( $args );
        shuffle($alltags);
        $count=0;
        if ($alltags) {
            foreach($alltags as $tag) {
                $count++;
                echo '<a href="'.get_tag_link($tag->term_id).'">'.$tag->name.'</a>';
        if( $count >19 ) break;
        }
    }
?>

请回复发现的任何错误,以便我进行编辑。

于 2014-03-11T10:53:09.207 回答