按自定义用户字段对帖子进行排序

时间:2015-03-20 作者:BANGO

因此,我试图按自定义用户字段对帖子进行排序,我会解释。。。

因此,我在注册页面中添加了存档的用户,这些字段是复选框,它们允许用户选择他感兴趣的主题。

示例:

你对什么话题感兴趣?

设计

科学

地理

计算机

我希望在用户注册并从注册复选框中选择选项后,一旦他登录到他的帐户,他将在顶部看到他感兴趣的主题中的帖子。

你知道实现这一目标的最好方法是什么吗?

1 个回复
SO网友:websupporter

因此,如果您只想在主页上显示登录用户感兴趣的帖子,可以使用the pre_get_posts-Action:

add_action( \'pre_get_posts\', \'wp123234_user_specific_loop\' );
function wp123234_user_specific_loop( $query ){
    if( ! is_user_logged_in() ) //Just return, if the user is not logged in.
        return;

    if( ! $query->is_main_query() ) //If its not the main query return
        return;

    if( !$query->is_home() ) //If its not the "home"-query return
        return;

    $interests = get_user_meta( get_current_user_id(), \'interests\', true );
    if( empty( $interests ) ) //If the user has no interests return
        return;

    /*Now, we want to display the specific posts.*/

    //Assuming, the $interests-Array contains category-IDs
    //$query->set( \'category__in\', $interests );

    //Assuming, the $interests-Array contains custom fields of posts
    $query->set( \'meta_query\', array( array(
            \'key\'     => \'interests\',
            \'value\'   => $interests,
            \'compare\' => \'IN\',
        ) ) );

    //Assuming, you want to ignore sticky posts, since they might show up, although the
    //user is not interested in
    $query->set( \'ignore_sticky_posts\', true );
}

结束

相关推荐

Iterate through ID's in loop

我已经基于category创建了一个自定义循环,现在我想运行一个函数,将当前帖子的特定ID作为参数进行迭代。我有。。$secondary_loop = new WP_Query(array( \'category_name\' => get_the_title(), \'posts_per_page\' => 5 )); while ( $secondary_loop->have_posts() ) : $secondary_loop->the_post();&#x