Как загрузить PHP-код каждый раз, когда страница загружается? - PullRequest
1 голос
/ 20 сентября 2019

Я работаю на сайте WordPress.Я использую плагин mycred, чтобы у любого пользователя был баланс баллов (баллы можно использовать для покупки привилегий. Приведенный ниже код php можно использовать для удержания баллов.

$user_id = get_current_user_id();
mycred_subtract( 'penalty', $user_id, -10, 'Points penalty' );

Как я могу выполнить его каждый раз, когда пользователь посещаетконкретная страница? Таким образом, за каждое посещение страницы пользователь теряет очки (даже если он обновляет, он может потерять очки), какие-либо идеи? Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 20 сентября 2019

Вы можете подключиться к действию pre_get_posts.Это действие выполняется КАЖДЫЙ раз, когда пользователь запрашивает или запрашивает что-либо.Это дается вам в переменной $ query.

function deduct_points($query){
    //this is standard practice
    if(!is_main_query()){
        return $query;
    }

    $user_id = get_current_user_id();
    //EXAMPLES
    //custom post type
    if($query->post_type === 'my custom post type') {
        //run your function
        mycred_subtract( 'penalty', $user_id, -10, 'Points penalty' );
    }

     //any page or post
     if($query->post_type === 'page' || $query->post_type === 'post'){
         //run your function
         mycred_subtract( 'penalty', $user_id, -10, 'Points penalty' );
     }

    //specific page
    if($query->pagename === 'use the page slug here' ){
          //run your function
    }
    //always return the $query
    return $query;
}
add_action('pre_get_posts', 'sjdh_deduct_points', 1);
0 голосов
/ 20 сентября 2019

Поместите свой код в функцию и вызовите этот код на определенной странице, если вы создали шаблон страницы.

например

function user_penalty(){
    $user_id = get_current_user_id();
    mycred_subtract( 'penalty', $user_id, -10, 'Points penalty' );
}

вызовите эту функцию user_penalty() на страницеты хочешь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...