Задать вопрос
  • Как вывести число товаров в категории woocommerce?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Количество товаров доступно в объекте WP_Term этой категории:
    $category = get_term( TERM_ID, 'product_cat' ); // если известен ID категории, или же:
    $category = get_term_by( 'slug', TERM_SLUG, 'product_cat' ); // если надо по слагу категории
    echo $category->count;
    Ответ написан
    7 комментариев
  • Как вывести пагинацию на custom post type?

    @avprinciple Автор вопроса
    Погуглив и помучившись, я выяснил, что с get_posts не работает, нужно менять на WP_Query, я нашел тут сей код:
    Paginating a CPT.

    <?php
    $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
    $args = array(
         'post_type' => 'custom_post_type_name',
         'posts_per_page' => 10,
         'paged' => $paged
    );
    $loop = new WP_Query( $args );
    while ( $loop->have_posts() ) : $loop->the_post();
         //CPT. content
    endwhile;
    ?>
    <nav class="pagination">
         <?php
         $big = 999999999;
         echo paginate_links( array(
              'base' => str_replace( $big, '%#%', get_pagenum_link( $big ) ),
              'format' => '?paged=%#%',
              'current' => max( 1, get_query_var('paged') ),
              'total' => $loop->max_num_pages,
              'prev_text' => '&laquo;',
              'next_text' => '&raquo;'
         ) );
    ?>
    </nav>
    <?php wp_reset_postdata(); ?>


    Я от слова совсем не силён в PHP, не знаю как тут в циклах закрываются скобки, в этом коде при выводе html - разметки - ошибка.
    Сопаставив и чуток переписав цикл с wp-kama, у меня всё получилось, навигация вывелась, всё огонь.
    Этот код рабочий, просто цикл переписать надо, или что-то, чего я не знаю в этом коде с примера)

    Мой переписанный код:

    <?php
              $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
                $args = array(
                  'posts_per_page' => 6,
                  'order'          => 'ASC',
                  'post_type'      => 'my_type_post',
                  'paged'          => $paged
                );
                $loop = new WP_Query( $args );
              ?>
              <?php
                if( $loop->have_posts() ) {
                  while( $loop->have_posts() ){
                    $loop->the_post();
                    ?>
                    <h3><?php the_title(); ?></h3>
                    // My HTML
                    <?php
                  }
                  wp_reset_postdata();
                } 
             ?>
    
    // И в нужно контейнере - месте размещаем nav.
    <code lang="php">
           <nav class="pagination">
              <?php
                $big = 999999999;
                echo paginate_links( array(
                  'base' => str_replace( $big, '%#%', get_pagenum_link( $big ) ),
                  'format' => '?paged=%#%',
                  'current' => max( 1, get_query_var('paged') ),
                  'total' => $loop->max_num_pages,
                  'prev_text' => '&laquo;',
                  'next_text' => '&raquo;'
                ) );
              ?>
            </nav>
    </code>

    Ответ написан
    Комментировать
  • Как зафиксировать страницу при открытии всплывающего окна с собственным скроллингом?

    @Amoled Автор вопроса
    В общем очень жаль, что на Тостере в принципе спрашивать бесполезно.

    Ответ сам нашел - для блока, содержащего весь контент страницы, overflow: hidden должен стоять постоянно, и height: auto; Для фиксации контента при отображении всплывающего окна ставим height в $(window).height() + $(window).scrollTop(). Т.е. высота окна + текущее положение на странице, а также margin-top равный $(window).scrollTop()*-1.

    Чтобы основной контент страницы не сдвигался при исчезновении прокрутки страницы (а прокрутка внитри блока - это прокрутка внутри блока, а не страницы), заранее для блока с данными страницы ставим width равный $(window).width(), т.е. фиксируем ширину блока как ширина блока с прокруткой. Тогда ничего никуда не уедет.

    Чтобы в самом всплывающем окне всегда показывать контент с начала, а не с места, где остановились в последний раз, делаем .scrollTop(0) для блока с контентом.

    Чтобы при закрытии окна ничего никуда не ускакивало - можно перед очисткой margin-top его запоминать, умножать на -1 вновь и делать scrollTop() для всей страницы на указанное значение.
    Ответ написан
    8 комментариев