我已经在我的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');
答案 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);