Ответы пользователя по тегу WordPress
  • Ребятки, нужен плагин для продажи видеокурсов на wordpress, правильно ли я мыслю?

    AGorbunoff
    @AGorbunoff
    Учусь:)
    Просто, присваивайте роль пользователя при покупке товара или продавайте сам доступ и при этом меняйте роль оплатившего, например так:

    add_action( 'woocommerce_order_status_completed', 'change_role_on_pro' );
    function change_role_on_pro( $order_id ) {
        $order = wc_get_order( $order_id );
        $items = $order->get_items();
    
        $products_to_check = array( '3420' ); // id товара, при оплате которого меняется роль
    
        foreach ( $items as $item ) {
            if ( $order->user_id > 0 && in_array( $item['product_id'], $products_to_check ) ) {
            	$user = new WP_User( $order->user_id );
    
            	// заменить роль
            	$user->remove_role( 'customer' );
            	$user->remove_role( 'subscriber' );
            	$user->add_role( 'clientpro' );
    
                // окончание цикла
                break;
        	}
        }
    }


    Теперь, с помощью любых плагинов из категории Access настраиваете ограничения на просмотр контента или целых страниц/разделов. Отличное решение плагин: Toolset Types Access
    Ответ написан
    2 комментария
  • Как в $post_id передать нужную запись для события cron и обновления полей update_post_meta по расписанию?

    AGorbunoff
    @AGorbunoff Автор вопроса
    Учусь:)
    Итоговый сниппет, который обновляет произвольные поля текущей записи по событию cron без необходимости жать кнопку "обновить".

    Спасибо nokimaro и yarovikov за поддержку!


    Это позволяет вносить любые изменения в запись по расписанию.

    // регистрируем интервал 24 часа
    add_filter( 'cron_schedules', 'cron_24' );
    function cron_24( $schedules ) {
      $n = rand(0,55);
      $schedules['rand_24'] = array(
        'interval' => 60 *  $n  * 24,
        'display' => 'раз в сутки'
      );
      return $schedules;
    }
    
    // регистрируем событие 24_event
    add_action( 'wp', 'to_cron_24' );
    function to_cron_24() {
      if ( ! wp_next_scheduled( '24_event' ) ) {
        wp_schedule_event( time(), 'rand_24', '24_event');
      }
    }
    
    // добавляем функцию к хуку события
    add_action( '24_event', 'updated_meta' );
    function updated_meta() {
    
       // получаем массив записей post
        global $post;
    
        $args = array(
         'post_type' => 'post'
          );
    
        $posts = get_posts( $args );
    
        foreach( $posts as $post ){
          setup_postdata($post);  // устанавливаем данные	
        
          // какая-то задача внутри цикла, например ключевые фразы
          $keywords = 'ключевые фразы для серии постов';
        
          $post_id = get_the_ID(); // получаем ID текущего поста в цикле
        
          //  обновляем произвольное поле раз в сутки в случайное время
          update_post_meta( $post_id, 'allkeywords', $keywords );    
    
      }
    }
    Ответ написан
    Комментировать