Ответы пользователя по тегу WordPress
  • Как сделать кастомную карточку товара на WordPress?

    @avprinciple
    Ап, интересно тоже)
    Ответ написан
    Комментировать
  • Как изменить каждый пункт меню, и вставить в ссылку новые атрибуты из ACF field пункта меню?

    @avprinciple Автор вопроса
    Гуглил, не нашел как мне менять html каждого пункта меню. Везде только .= то есть только дописать какой-то html к существующему меню или правки по атрибутам пункта меню (url, title, classes и т.д.)

    Написал себе такое вместо дата-атрибутом в ссылки :D

    add_filter( 'wp_nav_menu_objects', 'filter_wp_nav_menu_objects', 10, 2 );
      function filter_wp_nav_menu_objects( $items, $args ) {
        if ( 
            $args->theme_location == 'tab-menu'
           ) {
          foreach ( $items as $item ) {
            $field = get_field('tab-menu-image', $item);
            $item->title .= 
              '
                <i class="menu-tab__list-link-img-url">'.$field['url'].'</i>
                <i class="menu-tab__list-link-img-alt">'.$field['alt'].'</i>
              ';
          }
        }
        return $items;
      }
    Ответ написан
  • Как отправить несколько файлов разного формата через wp_mail?

    @avprinciple Автор вопроса
    Нужно загружать файлы на сервер, потом с сервера уже отправлять на почту. Можно удалять файлы с сервера - после отправки на почту.

    if ( ! function_exists( 'wp_handle_upload' ) ) {
              require_once( ABSPATH . 'wp-admin/includes/file.php' );
            }
    
            $file = $_FILES['file_project'];
    
            $upload_overrides = array(
              'test_form' => false
            );
    
            $file_project = wp_handle_upload( $file, $upload_overrides );


    $attachments = array(
              $drawing_project['file'], // 1 файл
              $description_project['file'], // 2 файл
              $file_project['file'] // 3 файл
            );
            
      
            $response_mail = wp_mail( $to, $subject, $message, $headers = '', $attachments);


    Удалим файлы с сервера, после отправки на почту
    if( $response_mail ) {
              // Что-то сделаем, если успешно отправилось на почту.
              func_response_mail()->add('success', 'success'); // Простая функция, которая вызывает алерт с сообщением об успешной отправке
            } else {
              func_response_mail()->add('failure', 'failure');
            }
    
            foreach ( (array)$attachments AS $file ) {
              if( file_exists($file) ) {
                unlink($file);
              }
            }
    Ответ написан
    Комментировать
  • Как вывести пагинацию на 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>

    Ответ написан
    Комментировать