简而言之:你做错了。
冗长的回答
update_post_meta
实际上会更新字段,因此每当代码运行时
_featured
更新为
1
. 无需单击,实际上是告诉它立即更新值。
您应该做的是让您的链接指向一个可以在单击链接时处理请求的页面:
echo \'<li><a href="\' . add_query_arg( \'set_featured_id\', $job->ID ) . \'">Featured</a>\';
然后,处理该信息:
add_action( \'init\', function() {
$job_id = filter_input( INPUT_GET, \'set_featured_id\', FILTER_VALIDATE_INT );
if ( null === $job_id ) {
return;
}
update_post_meta( $job_id, \'_featured\', 1 );
});
然而,上述解决方案确实不安全。您可能应该查看一些函数来“判断”用户是否可以这样做,例如
current_user_can
- 您还可以将此作为表单提交的一部分进行研究,这将允许您利用
wp_nonce_field
还有一些额外的安全性。