在每个页面和每个帖子的末尾,我想将标签作为短代码中的列表输出。
不幸的是,我对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');
答案 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
将只返回空