如何在Wordpress页面上使用get_the_tags?

时间:2014-03-31 21:15:24

标签: php wordpress tags

我已经在我的Wordpress页面上添加了标签(工作正常),但我试图在页面上列出它们。

这个想法是让特定页面(而不是帖子)的所有标签都具有并格式化它们。我得到的是2个随机(无关)标签,或整个标签列表。我不确定我在这里缺少什么。

$relatedArea = the_slug(false); //gets the slug of the page - false represses the echo statement

$allTags = get_tags(); //gets all the tags
$areasOfLaw = array(); //starts the array

// check if the tag is included on the page
foreach ($allTags as $tag) {
  if(has_tag($relatedArea)) {
    $areasOfLaw[] = $tag; //add to the array
  }
}

尝试$areasOfLaw = get_the_tags(),但它给了我随机标签。

这是格式化,但我很确定它的工作正常。

foreach($areasOfLaw as $tag){
    echo '
        <a href="'.get_site_url().'/services/'.$tag->slug.'">
        <li>'.$tag->name.'
        <span class="glyphicon glyphicon-chevron-right pull-right action"></span>
        </li></a>';
    }

编辑:这是我在功能文件中包含的标记支持

// add tag support to pages
function tags_support_all() {
    register_taxonomy_for_object_type('post_tag', 'page');
}

// ensure all tags are included in queries
function tags_support_query($wp_query) {
    if ($wp_query->get('tag')) $wp_query->set('post_type', 'any');
}

// tag hooks
add_action('init', 'tags_support_all');
add_action('pre_get_posts', 'tags_support_query');

2 个答案:

答案 0 :(得分:1)

get_the_tags()函数返回与post关联的所有标记,如果您在循环中使用它,那么您可以像这样使用它:

$tags = get_the_tags();

但是如果您在循环之外使用它,那么您必须提供要为其检索该标记的帖子的ID,例如获取其ID的帖子的所有标记是10

$tags = get_the_tags(10);

现在你可以像这样循环$tags

foreach($tags as $tag)
{
    echo $tag->name . ' ';
}

详细了解Codex

答案 1 :(得分:0)

@Sheikh Heera指出我正确的方向。

即使$areasOfLaw在循环中,但我的网页ID仍未正确返回。

以下代码对我有用:

$page_object = get_queried_object();
$page_id = get_queried_object_id();
$areasOfLaw = get_the_tags($page_id);