因此,我正在try 根据我的帖子列表进行过滤.到目前为止,我有一个函数,它可以将看到任何给定帖子的任何用户保存到一个名为‘Loged_Viewers’的元域中,并且我已经验证了它是有效的,因为我可以在帖子内容中打印出它的内容
我正在使用带有自定义查询ID的Elementor循环格网
下面的代码应该只显示当前用户没有看到的帖子,但它不起作用,我似乎找不出原因
function query_by_seen( $query ) {
// Get current meta Query
$meta_query = $query->get( 'meta_query' );
// Get meta data
$userID = get_current_user_id();
$viewers_list = get_post_meta( $post->ID, 'logged_viewers', true );
// If there is no meta query when this filter runs, it should be initialized as an empty array.
if ( ! $meta_query ) {
$meta_query = [];
}
// Append our meta query
$meta_query[] = [
'key' => $viewers_list,
'value' => $userID,
'compare' => 'NOT IN',
];
$query->set( 'meta_query', $meta_query );
}
add_action( 'elementor/query/query_by_seen', 'query_by_seen' );
以下代码填充logged_viewers
字段:
function log_viewers() {
global $post;
$viewers_nonce = wp_create_nonce( 'viewers_nonce_' . $post->ID );
$userID = get_current_user_id();
$viewers = get_post_meta( $post->ID, 'logged_viewers', true );
if( empty( $viewers ) ) {
$viewers = array();
}
$viewers[] = $userID;
$viewers_list = array_unique( $viewers );
if( !wp_verify_nonce( $viewers_nonce, 'viewers_nonce_' . $post->ID ) ) {
die();
}
else {
update_post_meta( $post->ID, 'logged_viewers', $viewers_list );
}
}
add_action( 'wp_head', 'log_viewers' );
我是PHP的新手,所以我可能会错过一些东西,但如果有任何帮助,我将不胜感激