首页 > 解决方案 > 为什么 Wordpress get_the_ID() 返回空?

问题描述

我的代码很简单:

$group_id = get_the_ID();
if ( get_post_meta ($group_id, '_um_groups_shells', true) == 'true'){
    wp_set_object_terms( $group_id, array( 'full-shells' ), 'um_group_categories', true );
} elseif ( get_post_meta ($group_id, '_um_groups_shells', true) == 'false'){
    wp_remove_object_terms( $group_id, array( 'full-shells' ), 'um_group_categories', true );
}

我已经通过使用检查了条件是否正常工作die("Group:". $group_id);

我发现在示例die("Group:". $group_id);$group_id返回51478。但如果我使用 just die($group_id);then 它是空的。

基于此,我假设

wp_set_object_terms( $group_id, array( 'full-shells' ), 'um_group_categories', true );

不起作用,因为$group_id必须为空。

如果我这样运行它:

$group_id = 51478;
wp_set_object_terms( $group_id, array( 'full-shells' ), 'um_group_categories', true );

然后它工作正常。

更新 我尝试了 wpdevloper_j 的使用建议global $post; $post->ID;。但同样的问题发生了。我可以echo $group_id并且print_r($group_id)获得正确的 id,但是当尝试使用它执行时,wp_set_object_terms它似乎是空的。

是什么导致$group_id空的?

当我这样做时var_dump ($group_id),我收到int(51478)

更新 的解决方案问题出在后面的代码行:

wp_set_object_terms( $group_id, $formdata[ 'categories' ], 'um_group_categories', false );

false参数正在撤消上一个。所以它正在执行,然后在成功执行后再次更新。

那太令人沮丧了。:(

标签: phpwordpress

解决方案


die() — 相当于退出

exit ( string $status = ? ) : void
exit ( int $status ) : void

https://www.php.net/manual/en/function.exit.php


推荐阅读