如何从Wordpress页面/帖子中获取所有标签作为短代码列表?

时间:2017-11-03 21:51:15

标签: php html wordpress shortcode

在每个页面和每个帖子的末尾,我想将标签作为短代码中的列表输出。

不幸的是,我对PHP知之甚少,但是能够理解的人肯定能够使用下面的代码纠正我的错误。

提前谢谢!

<?php // functions.php | get tags
function addTag( $classes = '' ) {

    if( is_page() ) {
        $tags = get_the_tags(); // tags
        if(!empty($tags))
        {
            foreach( $tags as $tag ) {
                $tagOutput[] = '<li>' . $tag->name . '</li>';
            }
        }
    }
    return $tags;

}
add_shortcode('tags', 'addTag');

2 个答案:

答案 0 :(得分:2)

请注意,除非您更改了某些内容,否则页面不会有标记。

那说,这应该有效。它还会在标签周围添加<ul>,但您可以更改它,我确定您会看到哪里。我已经使用了is_singular,但您可能会在没有这种情况的情况下离开,除非您在自定义帖子类型中添加[tags]并且不想要输出那里。 我假设你想添加更多修改,否则webdevdani关于使用the_tags的建议可能更简单。

// get tags 
function addTag( $classes = '' ) {
    if( is_singular("post") || is_singular("page") ) {
        $tags = get_the_tags();
        if(is_array($tags) && !empty($tags)) {
            $tagOutput = array("<ul>");
            foreach( $tags as $tag ) {
                $tagOutput[] = '<li>' . $tag->name . '</li>';
            }
            $tagOutput[] = "</ul>";
            return implode("", $tagOutput);
        }
    }
    return "";
}
add_shortcode('tags', 'addTag');

答案 1 :(得分:2)

该方法需要返回一个字符串才能打印任何标记。

&#34;短代码函数应该返回用于替换短代码的文本。&#34; https://codex.wordpress.org/Function_Reference/add_shortcode

function getTagList($classes = '') {
    global $post;
    $tags = get_the_tags($post->ID);
    $tagOutput = [];

    if (!empty($tags)) {
        array_push($tagOutput, '<ul class="tag-list '.$classes.'">');
        foreach($tags as $tag) {
            array_push($tagOutput, '<li>'.$tag->name.'</li>');
        }
        array_push($tagOutput, '</ul>');
    }

    return implode('', $tagOutput);
}

add_shortcode('tagsList', 'getTagList');

修改:已删除对is_page的检查,因为如果没有任何<{p},get_the_tags将只返回空