wyrfel
  • 0
Гуру

Временное содержание и пометка содержимого как просматриваемого пользователем?

  • 0

Я пытаюсь собрать сайт с функциональностью членства, и у меня есть большая часть того, что мне нужно. Тем не менее, в миксе по-прежнему отсутствуют две вещи:

  1. Мне нужно иметь возможность отображать контент, начиная с определенной даты, и прекращать его отображение, начиная с определенной даты (или указать срок действия).

  2. Я хотел бы иметь возможность помечать контент как просмотренный отдельными пользователями, чтобы затем отображать его в другом разделе сайта для этого пользователя. Как это делается (если с помощью таксономии или чего-то еще), мне все равно, и «поместить это куда-нибудь еще» я могу сделать сам.

Есть ли какие-нибудь хорошие, простые (делают только одно, но делают это правильно) бесплатные плагины, которые подходят для вышеперечисленного?

Share
  1. есть несколько плагинов для достижения того, что вы пытаетесь:

    Post Expirator — позволяет добавлять дату истечения срока действия (минуты) к сообщениям, которые вы можете настроить, чтобы либо удалить сообщение, либо превратить его в черновик.

    Простое истечение срока действия. Позволяет сообщениям и страницам автоматически истекать и изменяться в определенное время, а также предоставлять уведомление об истечении срока действия.

    что касается второй части вашего вопроса,

    Я хотел бы иметь возможность помечать контент как просмотренный отдельными пользователями, чтобы затем отображать его в другом разделе сайта для этого пользователя.

    вы можете сделать это, просто добавив новое поле usermeta, которое будет содержать массив идентификаторов сообщений, например

    function my_user_flag_887($post_id){
        if ( is_user_logged_in() ) {
            global $current_user;
            get_currentuserinfo();
            $user_flags = get_user_meta($current_user->ID, 'flaged', false);
            $user_flags[] = $post_id;
            update_user_meta($current_user->ID , 'flaged', $user_flags);
        }
    }
    

    поэтому все, что вам нужно сделать, это вызвать эту функцию и передать post_id для добавления/отметки

    my_user_flag_887('43');
    

    и предполагая, что пользователь вошел в систему, он добавит идентификатор 43 в массив флагов пользователей.

    и вы можете проверить, пометил ли пользователь сообщение, просто проверив, есть ли оно в этом массиве, или, что еще лучше, вы можете использовать wp_query для выбора сообщений, которых нет в этом массиве:

    global $current_user;
            get_currentuserinfo();
            $user_flags = get_user_meta($current_user->ID, 'flaged', false);
        $my_q = new WP_Query(array('post__not_in' => $user_flags ));
        if ($my_q->have_posts()){
            while ( $my_q->have_posts() ) { $my_q->the_post();
                //do you loop stuff
            }
        }else{
        echo 'nothing found';
        }
    

    Надеюсь это поможет

    • 0
    • Спасибо за ответ, я попробую, как только доберусь до этого, и отмечу ваш исчерпывающий ответ.

      • 0
    • Что касается второй части… так как это может расти немного быстро (у нас будут еженедельные сообщения, которые будут помечены), мне интересно, должен ли я вместо этого просто создать свою собственную таблицу? Какой из них будет более эффективным… передача длинного массива в post__not_in или присоединение к другой таблице с одним идентификатором ссылки?

      • 0

Оставить ответ

You must login to add an answer.