如何在unctions.php中获取最新的帖子ID?

时间:2021-07-14 作者:robert0

我正在尝试获取最新的帖子ID。

然后将该ID存储到user\\u meta中。

现在我有以下代码:

add_action(\'wp\', \'bt_update_user_homepage_meta\');
function bt_update_user_homepage_meta () {
    
// Get user id
$user_id = get_current_user_id();

// Get newest post ID
        //WP_Query Arguments
$args = array(
    \'posts_per_page\'    => 1,
    \'meta_key\'          => \'usp-custom-1\',
    \'meta_value\'        => \'question\',
);

//Execute WP_Query (Results placed in $the_query)
$the_query = new WP_Query($args);
$id = get_the_ID();
     
//The WordPress Loop
if ($the_query->have_posts()) { //Check if there are any posts returned in $the_query

    while ($the_query->have_posts()) { //Loop through posts returned in $the_query
        $the_query->the_post();

//Update user meta with the latest post ID
         if ( is_page( array( \'home\' ) ) ) update_user_meta($user_id, \'pagehome\', $id);
    }

} 

//Reset WordPress Post Data
wp_reset_postdata();
但它存储的是当前的帖子ID,而不是最新的帖子ID。

已经为此挣扎了一段时间。

我知道我可能在代码中遗漏了什么。

需要帮助。

1 个回复
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_get_recent_posts 对于按最新发布的帖子进行排序的最新帖子,并将查询限制为1个结果ID 将其存储到用户元中为了完整起见,我应该说,您可能不应该在每次加载页面时都这样做,因为您会有额外的get_posts() 每次查询,尽管只针对登录的用户。不过,更新用户元并没有什么问题,因为如果值没有更改,就不会向数据库写入任何数据。

相关推荐

WordPress用户Meta&ChromePHP或以其他方式调试/查看php变量

我正在开发一个插件来扩展BuddyBoss平台。具体来说,我正在将BB用户信息与Wordpress用户元数据同步。我的大部分代码都能正常工作(国家和地区组织更新良好),但同步我的“性别”字段并没有按预期工作。它似乎适用于男性和女性,但当选择“其他”时,它会将wordpress用户元字段设置为“女性”。我有两个问题:你能看到这段代码有什么问题吗:(忽略所有5次控制台输出尝试-这是我下面的第二个问题!)function BB_WP_SYNC_update_wordpress_usermeta( $user_i