Задать вопрос
  • Есть ли возможность используя Vue не отображать фигурные скобки (Mustache синтаксис) при загрузке/инициализации страницы?

    Vlad_IT
    @Vlad_IT
    Front-end разработчик
    Используйте такую директиву v-cloak для блока с вашим приложением. vue удалит его после инициализации, а значит, можно написать такой css, который будет прятать блок с таким атрибутом.
    div[v-cloak] {
        display: none;
    }
    Ответ написан
    2 комментария
  • Как убрать ненужные настройки в кастомайзере WordPress?

    deniscopro
    @deniscopro Куратор тега WordPress
    WordPress-разработчик, denisco.pro
    Попробуйте как-нибудь так:
    function mytheme_customize_register( $wp_customize ) {
    	$wp_customize->remove_section( 'title_tagline');
    	$wp_customize->remove_section( 'colors');
    	$wp_customize->remove_section( 'header_image');
    	$wp_customize->remove_section( 'background_image');
    	$wp_customize->remove_panel( 'nav_menus');
    	$wp_customize->remove_section( 'static_front_page');
    	$wp_customize->remove_section( 'custom_css');
    }
    add_action( 'customize_register', 'mytheme_customize_register', 99 );

    https://codex.wordpress.org/Class_Reference/WP_Cus...
    Ответ написан
    1 комментарий
  • Как сделать рандомный вывод?

    @Wol_fi
    php, js, mysql, highload
    <?php $args = array(
    	'cat' => 4,
    	'orderby' => 'rand',
            'posts_per_page' => 1 // сколько вам нужно рандомных постов
    );
    $query = new WP_Query($args);
    ?>
     <?php if ($query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); ?>
                    <a href="<?php $custom_fields =get_post_custom(); ?>">
                      <?php the_post_thumbnail(); ?>
                      <div class="text">
                        <h2><?php the_title(''); ?></h2>
                        <p><?php the_content('',true); ?></p>
                      </div>
                    </a>
                  <?php endwhile; ?>
                  <?php endif; ?>
    Ответ написан
    Комментировать
  • Как сделать поиск по параметрам ACF WP + FacetWP?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    1. Сделайте тут форму, это же и есть реальная форма которая собирает user input и передает на обработчик
    2. Все селекты/инпуты - это поля формы
    3. Кнопка - это сабмит формы
    4. Сабмитить можете как душе угодно - аяксом, на php и тд, или же js-ом перехватывать сабмит, собирать урл из значений полей и отправлять на этот урл.
    Ответ написан
    3 комментария
  • События для динамически добавленных в DOM элементов?

    @GR0ST
    jQuery работает с элементами, которые были на странице на момент инициализации кода.

    Если добавляются новые элементы - при помощи ajax'а или функций типа append() - то события не затрагивают их.

    Как же работать с новыми созданными элементами DOM?

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

    Если кратко, то смысл делегирования в том, что обработчики "навешиваются" не на отсутствующие в dom элементы, а на существующий родительский объект.

    Таким образом, при срабатывании соответствующего события, будет вызван данный обработчик для всех элементов, соответствующих селектору, даже если этих элементов не было во время объявлении обработчика (например при загрузке страницы).

    пример можно подсмотреть тут
    moxiemaks.ru/2017/06/25/sobytija-dlja-dinamicheski...
    Ответ написан
    Комментировать
  • Возможно ли в Contact Form 7 убрать лишние генерируемые теги?

    Velimudr1
    @Velimudr1
    Человек
    Здравствуйте.
    Ответ на ваш вопрос не так давно дали в более полном варианте. Удаляются не только параграфы, но и span. Ниже ссылка.
    Как убрать все лишние тэги генерируемые Contact Form 7?

    Так же можете прочесть здесь, если близки с английским языком
    How can I remove the span wrapper in Contact Form 7?
    Здесь больше приведено вариантов решения проблемы.
    Ответ написан
    Комментировать
  • Как убрать все лишние тэги генерируемые Contact Form 7?

    @cema93
    WordPress разработчик
    Если честно, рекомендую не переписывать плагин под себя, а подстроиться под плагин и вёрстку делать под стандартные теги Contact Form 7
    Ответ написан
    6 комментариев
  • Как изменить и добавить поля в корзине Woocommerce?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    По первому вопросу - смотрите код, ищите хуки и фильтры. Направление в котором копать (кроме документации, конечно же):
    stackoverflow.com/questions/21709826/woocommerce-o...

    По второму - billing address и shipping address - это два разных адреса. Биллинг - это адрес плательщика. Шиппинг - адрес куда доставить. Первый всегда один и тот же будет при повторных покупках, второй может меняться - заказать доставку в офис, родителям домой, девушке на работу и т.д. - вариантов масса. При первой регистрации надо заполнить оба адреса, во второй раз же billing уже будет заполнен. Чтобы сделать процесс удобнее для покупателя, есть опция "галочка - использовать адрес биллинга для доставки". Не помню только это родная фича WooCommerce или есть для этого плагин. Но точно есть - посмотрите настройки WC и поищите плагин через админку, если в настройках не найдете.
    Ответ написан
    2 комментария
  • Как вывести в каталоге Woocommerce вариации товара с ценой и корзиной напротив для каждой?

    ivan_zhuck
    @ivan_zhuck
    Сначала нужно получить все вариации товара, если они есть, а далее дело техники:

    global $product;
    // если товар вариантивный
    if ($product->is_type( 'variable' )) 
    {
        //получаем варианты
        $available_variations = $product->get_available_variations();
        foreach ($available_variations as $key => $value) 
        { 
            /**
             * Тут выводишь то что должно быть в списке вариаций.
             * Ссылку на добавление вариации товара в корзину в самом простом случае
             * можно сделать так: http://host.com/?add-to-cart=xxx, где xxx - это ID варианта
             **/
        }
    }
    Ответ написан
    5 комментариев
  • Как сделать кнопку сброса фильтров товаров в Woocommerce?

    MaximusDem
    @MaximusDem
    Начинающий разработчик
    Держи такой вариант
    1) Это вставишь в шапку сайта
    <?php $filterreset = $_SERVER['REQUEST_URI'];
    $filterreset = strtok($filterreset, '?'); ?>

    2) А кнопку сброса где-нибудь в шаблоне, там где надо
    <a href="<?php echo $filterreset; ?>">Сбросить фильтр</a>
    Ответ написан
    Комментировать
  • Как подключить свой фильтр цены в woocommerce?

    @gradk Автор вопроса
    И так разобрался сам.

    1) Фильтры wooconnerce находятся в папке /wp-content/plugins/woocommerce/includes/widgets/ , копируем файлик class-wc-widget-price-filter.php и вставляем к себе в тему, например в папку inc (wp-content/themes/grad_market/inc/)

    2) Редактируем ранее скопированный файл:

    Переименовываем файл, например так: price-widgets.php
    Переименовываем функцию, например так:

    class My_Widget_Price_Filter extends WC_Widget {

    Далее в конце файла, инициализируем виджет:

    function register_price1_widget() {
        register_widget( 'My_Widget_Price_Filter' );
    }
    add_action( 'widgets_init', 'register_price1_widget' );


    3) Далее в fuctions.php подключаем этот виджет:

    require get_template_directory() . '/inc/price-widgets.php';


    4) Теперь для каждого инпута в верстке фильтра пишем (скрин выше, есть поле мин цены и максимальной):

    name="min_price" и соответственно name="max_price"

    Пример:

    <input id="priceMin" name="min_price" class="min_price" value="5000"> -
    <input id="priceMax" name="max_price" value="15000" class="min_price">
    Ответ написан
    Комментировать
  • Как сверстать такой треугольник?

    profesor08
    @profesor08 Куратор тега CSS
    Кривая Безье - это именно то, что тебе на самом деле надо для того, чтоб решить свою задачу.

    clip-path - это то, что позволит использовать тебе Кривые Безье для стилизации своего элемента.

    Тем, кто не хочет развиваться сюда
    Ответ написан
    1 комментарий
  • Как подружить яндекс карты и wordpress?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    тут референсы https://yandex.ru/dev/maps/jsbox/2.0/

    со стороны вп, достаточно хранить координаты, в произвольных полях.

    Дальше как хватает фантазии.

    с гуглкартами не проще + их API просит денег
    Ответ написан
    5 комментариев
  • Как перейти от ACF PRO на Gutenberg?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    ACF Pro помогает создавать блоки для Gutenberg с помощью PHP, это удобно и значительно ускоряет работу. Но если надо полностью отказаться от ACF Pro и использовать только Gutenberg, то придется запилить свои блоки (привет React) или же найти готовые, подходящие под ваши задачи.

    Впрочем, по некоторым блокам стоит выдохнуть и немного подумать - возможно стоит изменить свое мышление. К примеру, на ACF мы повторяющийся контент автоматом считаем рипитером и создаем соответствующие поля. А на Gutenberg часто repeater как таковой и не нужен - достаточно самого блока. Ведь создать несколько одинаковых блоков подряд в Gutenberg не составляет труда, это как бы встроено из коробки.

    Простой пример - блок testimonials. На ACF мы создаем обычно рипитер, в нем нужные поля которые будут повторяться, скажем - text, name, photo (текст отзыва, имя клиента и его аватар). А на gutenberg достаточно иметь блок testimonial с этими же полями, и просто вставить его X раз подряд - вот вам и повторяющиеся данные.
    Ответ написан
    Комментировать
  • Как вывести произвольное поле таксономии на странице архива через ACF?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    get_queried_object()
    get_queried_object_id()

    echo get_field( 'little-text', 'products_category_' . get_queried_object_id() );


    Также не откажусь от альтернативных вариантов вывода 2х разных текстов на странице архива.

    Не совсем понятно что вы имеете в виду.
    Ответ написан
    Комментировать
  • Есть ли смысл учить Wordpress для того что бы зарабатывать деньги на фрилансе делая простые и сложные многофункциональные сайты?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    денег можно поднимать, и поднимать нормально, только надо вот прямо знать и знать хорошо, на просто развернуть и накидать страниц в элементоре это херня, это даже на минимально прожить не хватит, для жить с этого, над уметь и уметь очень хорошо.
    Ответ написан
    Комментировать
  • Как удобно настроить вывод блоков с контентом на Wordpress?

    Привет.

    я делаю так.

    всю информацию делю на локальную и глобальную. Локальная - то, что выводится в одном месте на странице. Глобальная - используется в нескольких местах (чаще всего это контактная информация).

    Для локальных данных создаю поля ACF на тех страницах, где они выводятся. Для глобальных - добавляю options page.

    Бывает, когда нужно выводить повторяющиеся данные в нескольких местах. Например, отзывы или портфолио. Можно использовать ту же options page и repeater (ACF). Но мне больше нравится register_post_type. А там где нужно вывести эти данные использую WP_Query.
    Ответ написан
    1 комментарий
  • Как вывести название кастомных рубрик и название постов, которые в этой рубрике в WordPress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Самый простой вариант, хотя и не самый производительный, если таких "групп записей" много:
    // Сначала получаем термины кастомной таксономии:
    $terms = get_terms( [
        'taxonomy' => 'taxonomy_name', // тут укажите правильное название вашей таксономии
        'hide_empty' => true,
    ] );
    
    // Далее циклом выводим эти блоки:
    foreach ( $terms as $term ) :
    
        echo '<div>';
    
            // Получаем Х записей с конкретным термином, формируем параметры запроса:
            $args = [
                'post_type' => 'post_type_name', // тут укажите правильное название вашего custom post type
                'posts_per_page' => 5 // количество записей
                'tax_query' => [
                    [
                        'taxonomy' => 'taxonomy_name', // тут укажите правильное название вашей таксономии
                        'field' => 'term_id', // term_id, slug или name - что удобнее
                        'terms' => $term->term_id, // ID текущего термина в цикле
                        'include_children' => false,
                    ],
                ],
            ];
    
            // Получаем Х записей с конкретным термином:
            $posts_with_term = new WP_Query( $args );
    
            // Выводим записи циклом:
            while ( $posts_with_term->have_posts() ) : $posts_with_term->the_post();
    
                // Тут форматируйте вывод как угодно:
                the_title();
    
            endwhile;
            wp_reset_postdata();
    
        echo '</div>';
    
    endforeach;

    Дополнительно почитайте про все параметры WP_Query, чтобы оптимизировать их (например, отключить пагинацию, кеширование метаданных и терминов так как здесь они вам не нужны и тд) - это позволит уменьшить общее количество запросов к БД и повысить производительность.

    Очевидно, что если терминов у вас много, то каждый термин будет давать дополнительный WP_Query. Производительность будет немножко падать по мере роста количества терминов, которые требуется вывести. Впрочем, эти списки не будут меняться прям очень часто, поэтому тут сразу просится кеширование.

    Кеширование я бы делал так:

    1. Каждый WP_Query кешируется в transients / object cache (только почитайте как правильно кешировать именно $query->results а не весь объект WP_Query).
    2. Каждому такому блоку в кеше присваиваем рандомное (в определенном диапазоне) время жизни. Чтобы все блоки не сбрасывались и не пересоздавались одновременно. Так регенерация кеша будет незаметна, если есть более-менее стабильный трафик.
    3. При добавлении новой записи смотреть в какой блок она входит и удалять этот блок из кеша. Это предотвратит отображение устаревшей информации.

    P.S.: Писал не проверяя прямо здесь, так что мог где-то опечататься, но в целом должно работать.
    P.P.S.: Сложность этого вопроса "средний", а не "сложный" - это все делается стандартными средствами и подробно расписано в документации.
    Ответ написан