【发布时间】:2021-03-22 14:58:59
【问题描述】:
我需要显示帖子的标签 ID。我试过了
$myTopics_id = '';
$tags = get_the_tags();
foreach($tags as $tag) {
$myTopics_id .= $tag->tag_ID;
}
在循环内部获取要在此处显示的标签:
<div onclick="location.href='<?php the_permalink(); ?>'" data-topics="<?php echo $myTopics_id; ?>">
但它不显示任何内容,字符串只是保持为空:
<div onclick="http://localhost/posts/" data-topics="">
我在这里做错了什么?
编辑:感谢用户 biesior,我现在已将代码更改为:
<?php $wpb_all_query = new WP_Query(array('post_type'=>'post', 'post_status'=>'publish', 'posts_per_page'=>-1)); ?>
<?php if ( $wpb_all_query->have_posts() ) : ?>
<?php while ( $wpb_all_query->have_posts() ) : $wpb_all_query->the_post();
/* Get Category ID */
$categories = get_the_category();
$mySection_id = $categories[0]->cat_ID;
/* ------- */
/* Get Tag IDs */
$myTopics_id = '';
$tags = get_tags();
foreach($tags as $tag) {
$myTopics_id .= $tag->term_id;
$myTopics_id .= ", ";
}
?>
<div data-topics="<?php echo $myTopics_id; ?>" data-section="<?php echo $mySection_id; ?>">
... content to be displayed ...
</div>
<?php endwhile; ?>
<?php wp_reset_postdata(); ?>
<?php endif; ?>
但结果仍然是错误的,因为它是将 term_ids 相加,而不是在每个帖子中单独显示。
所以,作为一个例子,我目前的结果是
<div data-topics="15, 16, 13, 12, 10, 8, 11, " data-section="3"> ... </div>
如您所见,每个帖子的当前类别显示正确。但是数据主题的价值是错误的,并且在每篇文章中都是一样的。 每个帖子可能有多个标签。因此,如果结果是这样,那将是正确的
<div data-topics="15, 16, " data-section="3"> ... </div>
第一篇文章,然后
<div data-topics="13, " data-section="7"> ... </div>
第二次
<div data-topics="12, 10, 8, " data-section="1"> ... </div>
第三个帖子,以此类推。
但目前每个帖子的数据主题值都相同(“15、16、13、12、10、8、11、”),因此循环或标签请求中似乎存在错误。但我不知道什么和在哪里。
【问题讨论】:
-
放在
foreach()循环中的var_dump($tag)显示了什么? -
具体在哪里?在 $myTopics_id .= $tag->tag_ID; 行之前还是在里面还是……?抱歉,我是 WP 主题和 PHP 的新手 :-(
-
你可以把它放在
forech()循环的开头。线索是确保$tag被完全提取并且是所需类型的对象。您还可以通过在 PHP 代码的第 3 行添加var_dump($tags)来检查是否正确获取了$tags。将来值得启用即 Xdebug 并配置您的 IDE 以使用它来更轻松地调试此类事情,而不是将var_dump()到处乱放。 -
好的,谢谢。它渲染了很多东西,例如 object(WP_Term)#1084 (10) { ["term_id"]=> int(15) ["name"]=> string(13) "Sample 1" ["slug"] => string(13) "Sample 2" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(15)
-
你可以看到这个对象没有名为
tag_ID的字段,你的意思是term_id吗?或者也许你正在获取错误的对象?这几行很难猜。
标签: php tags wordpress-theming