SO网友:Paul G.
下面是可能适合您的代码:
function bt_update_user_homepage_meta() {
// Get user id
$user_id = get_current_user_id();
if ( !empty( $user_id ) && is_page( [ \'home\' ] ) ) {
$posts = wp_get_recent_posts( array(
\'numberposts\' => 1,
\'meta_key\' => \'usp-custom-1\',
\'meta_value\' => \'question\'
) );
if ( !empty( $posts ) ) {
update_user_meta( $user_id, \'pagehome\', array_pop( $posts )->ID );
}
}
}
add_action( \'wp\', \'bt_update_user_homepage_meta\' );
我已经做了一些调整:
我把它包在if ( !empty( $user_id ) && is_page( [ \'home\' ] ) )
因此,除非用户已登录,并且该页面是;主页“我使用方便的wp查找功能wp_get_recent_posts
对于按最新发布的帖子进行排序的最新帖子,并将查询限制为1个结果然后我从帖子数组中弹出它并引用ID
将其存储到用户元中为了完整起见,我应该说,您可能不应该在每次加载页面时都这样做,因为您会有额外的get_posts()
每次查询,尽管只针对登录的用户。不过,更新用户元并没有什么问题,因为如果值没有更改,就不会向数据库写入任何数据。