• Как залить векторное лого на wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Вставьте в functions.php:
    /**
     * Allow SVG files in Media Library.
     */
    function extra_mime_types( $mimes ) {
    
    	$mimes['svg'] = 'image/svg+xml';
    
    	return $mimes;
    }
    add_filter( 'upload_mimes', 'extra_mime_types' );

    И спокойно загружайте себе SVG-файлы. EPS в вебе не поддерживается.

    Данный код работает 100%, проверено на десятках сайтов собственными руками.
    Ответ написан
    4 комментария
  • Почему не работает аргумент numberposts в get_posts?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Ваш код выводит записи отдельными (от основного) запросами, а пагинация для архива категории "Цены" строится на основном запросе (глобальный $wp_query). Поскольку основной запрос вы не меняли, то и пагинация у вас присутствует, что вполне естественно и правильно.

    Если вам нужно на странице "Цены" (которая является архивом рубрики "Цены") вывести ВСЕ записи из этой рубрики, сгруппировав их по подкатегориям, то:
    1. Хукаетесь в экшн pre_get_posts (дока 1 и 2)
    2. Проверяете, чтобы это был главный запрос && в рубрике "Цены"
    3. Устанавливаете нужный параметр запроса: все посты, без пагинации (nopaging = true)

    Таким образом, вы получите ВСЕ посты рубрики "Цены" в главном запросе, без пагинации. Выводить стандартным циклом. Беда только в том, что они никак не сгруппированы по дочерним категориям. Решается проверками в цикле.
    Ответ написан
    4 комментария
  • Почему не срабатывает условие в WordPress?

    link_web
    @link_web
    Magento, Laravel, Zend, Shopify, Prestashop, WP

    if { $post->ID > 900 } {
    // здесь код
    }

    Это что вообще за язык? В php в фигурных скобках описывается тело функции. тело функции или других объектов.
    Попробуйте вот такой код:
    if ($post->ID > 900) {
      // здесь код
    }
    Ответ написан
    Комментировать
  • Что может быть не так с админкой Wordpress?

    vladislav_boychenko
    @vladislav_boychenko
    Купаюсь в гривнах
    В футере
    <?php wp_footer(); ?>
    подключено? Или сам футер подключен?
    Ответ написан
    1 комментарий
  • Перенос Wordpress + Woocommerce, могут ли быть проблемы?

    EllPro
    @EllPro
    вроде пишу какой-то код elsevar.de
    Duplicator
    Ответ написан
    Комментировать
  • Как правильно составить запрос к БД для вывода материалов с определёнными данными?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    1. Не использовать query_posts. Никогда. Вместо него есть get_posts или WP_Query.
    2. Сейчас вы выборку делаете по наличию мета-поля "go_index_slider". А надо - по конкретному значению этого поля:
    $args = array(
                    'posts_per_page' => 5,
                    'meta_key'    => 'go_index_slider',
                    'meta_value_num' => 1, // только со значением поля go_index_slider = 1
                    //'orderby'     => '1', // а вот это у вас вообще не работает, это бред - https://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters
                    'orderby' => 'modified', // а вот так будет по дате изменения сортировать
                    'order'       => 'DESC'
                );
                $posts = new WP_Query( $args );


    UPDATE 1: Давайте пропишем корректно всю логику, пошагово.

    1. Для вывода постов в слайдере необходим вторичный цикл (Secondary Loop). В нем мы выбираем 5 постов у которых есть meta поле go_index_slider со значением 1 и сортируем посты по дате последнего изменения:
    <?php
    // Устанавливаем аргументы
    $args = array(
        'posts_per_page' => 5,
        'meta_key'    => 'go_index_slider',
        'meta_value_num' => 1,
        'orderby' => 'modified',
        'order'       => 'DESC'
    );
    // Выполняем запрос и получаем записи
    $slides = new WP_Query( $args );
    
    // Строим слайдер только если посты найдены
    if ( $slides->have_posts ) : ?>
        <div class="slider">
        <?php while ( $slides->have_posts() ) : $slides->the_post() ?>
            <div class="slide">
                <?php the_title(); ?>
            </div>
        <?php endwhile; ?>
        <?php wp_reset_postdata(); ?>
        </div>
    <?php endif; ?>

    2. Далее необходимо вывести основной цикл (Main Loop). Тут важно понимать, что основной запрос (main WP_Query) на данный момент уже давно выполнен, он выполняется раньше нашего secondary.
    <?php if ( have_posts ) : ?>
        <div class="posts">
        <?php while ( have_posts() ) : the_post() ?>
            <div class="post">
                <?php the_title(); ?>
            </div>
        <?php endwhile; ?>
        </div>
    <?php endif; ?>

    3. Западло в том, что основной запрос включит в себя и те посты, которые мы вывели в слайдере, а нам, скорее всего, это не нужно. Поэтому надо исключить их из основного запроса. Это можно сделать с помощью хука pre_get_posts, который позволяет модифицировать основной запрос непосредственно перед его выполнением. Но, напомню, на момент выполнения основного запроса мы ничего не знаем о вторичном запросе, поэтому придется еще раз запрашивать базу и получать ID постов, которые будем исключать. Это не самый оптимальный подход, и это именно тот случай, когда query_posts можно (и даже нужно) использовать, понимая что мы делаем. Поэтому, перед нашим основным циклом, добавим query_posts и код выше будет выглядеть так:
    <?php
    // Подготовим аргументы
    $exclude_args = array(
        'meta_key' => 'go_index_slider',
        'meta_value_num' => 1,
        'meta_compare' => '!='
     );
    // Берем глобальный $wp_query
    global $wp_query;
    // Склеиваем оригинальные аргумента (дефолтные) с нашими
    $merged_args = array_merge( $wp_query->query, $exclude_args );
    // Модифицируем основной запрос
    query_posts( $merged_args );
    
    // Дальше выводим как обычно
    if ( have_posts ) : ?>
        <div class="posts">
        <?php while ( have_posts() ) : the_post() ?>
            <div class="post">
                <?php the_title(); ?>
            </div>
        <?php endwhile; ?>
        </div>
    <?php endif; ?>


    UPDATE 2:

    Как оказалось, поля типа checkbox плагин ACF сохраняет в виде сериализованного массива a:1:{i:0;s:1:"1";}, выборка по которому естественно, не работает. Замена типа поля на true/false (да/нет), он же toggle, решит проблему.
    Ответ написан
  • Чем отличается модуль от плагина под wordpress?

    LenovoId
    @LenovoId
    svg, css,js
    наверно тем что Модулей для WP нету и их называют Plugin
    Ответ написан
    Комментировать
  • Есть ли опенсорсная панелька для настройки цветов и стилей под WP?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Хватит делать свои панельки, используйте Customizer. Удобнее же.
    Ответ написан
    6 комментариев
  • Перенос сайта WP на другой хостинг с кирилличным доменом?

    Punkie
    @Punkie
    Не заниматься фигнёй и перенести сайт с помощью плагина Duplicator.
    Ответ написан
    3 комментария
  • Можно ли сохранить шаблон как отдельную тему при работе с Visual Composer?

    Punkie
    @Punkie
    использовать эту тему на другом сайте wordpress без visual composer


    Нет, нельзя. Результатом работы композера является набор шорткодов, который генерируется в соответствии с набранным вами шаблоном (в конструкторе) и просто вставляется в контент страницы. Создайте макет в композере, сохраните его и затем перейдите в стандартный редактор WP в режим исходного кода - вы поймёте что к чему. А так как шорткоды - чисто композеровские и используются только этим плагином, без "ядра" (а именно - самого плагина Visual Composer) ничего работать не будет.
    Ответ написан
    1 комментарий
  • Как установить тему купленную с template monster на WP?

    Punkie
    @Punkie
    Я конечно понимаю, что Новый Год и всё такое, но вы пробовали вот эту папочку открыть? :)759392e84a004b63b7168f3f68ab54ed.png
    Ответ написан
    Комментировать
  • Как вывести похожие записи random?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Добавить в WP_Query параметр orderby со значением rand
    ...
    $query_args = array(
        'post__not_in' => array($post->ID),
        'showposts' => $args['number_of_posts'],
        'ignore_sticky_posts' => 1,
        // рандомная выборка
        'orderby' => 'rand',
    );
    ...
    Ответ написан
    1 комментарий
  • Как написать условия на пхп или на JS если есть файл, или объект то показывать, а если нет то спрятать вордпресс?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    <?php 
    if ( ! empty ( get_post_meta( $post->ID, 'wpcf-dowloads', true ) ) ) {
        echo get_post_meta( $post->ID, 'wpcf-dowloads', true );
    }
    ?>

    или если надо целый блок html не выводить:
    <?php if ( ! empty ( get_post_meta( $post->ID, 'wpcf-dowloads', true ) ) ) : ?>
        <div>
            ...
            <?php echo get_post_meta( $post->ID, 'wpcf-dowloads', true ); ?>
            ...
        </div>
    <?php endif; ?>
    Ответ написан
    4 комментария
  • Как вывести записи за предыдущий год при их отсутствии за текущий?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Во-первых, никогда не используйте query_posts.
    Во-вторых, я б лучше не query модфицировал, а сделал простой редирект. Ведь у вас архив записей за 2016 год уже и так есть. Смотрим, если мы на странице архива 2017 и у нас have_posts() возвращает false - редиректим на 2016.

    Если это не main query, а какой-нибудь вторичный цикл - тогда да, date( 'Y' ) - 1
    Ответ написан
    2 комментария
  • Как отказаться от навязывания низкоквалифицированной работы?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Если в договорные работы не входила работа по наполнению готового нового сайта контентом или это не было явно указано в условиях договора - Вы не обязаны это делать.

    Самое основное - всегда разделяйте этапность работ: никогда не начинайте выполнять доп. работу не выполнив полностью предыдущую и не получив за неё заранее оговоренную с Заказчиком сумму.

    Лучший сейчас вариант (для Исполнителя) - создать нужную структуру категорий и создать 1-2 страницы, чтобы показать и объяснить Клиенту, как это делать ему самому в дальнейшем.
    Ответ написан
    3 комментария
  • Как сделать поиск только по 1 категории на Wordpress без плагинов?

    Palych_tw
    @Palych_tw
    Типа веб-разработчик
    pre_get_posts используйте
    wp-kama.ru/hook/pre_get_posts
    в доках есть готовый пример
    function search_filter($query) {
      if ( ! is_admin() && $query->is_main_query() ) {
    	if ($query->is_search) {
    	  $query->set('post_type', 'post');
    	}
      }
    }
    
    add_action( 'pre_get_posts', 'search_filter' );


    только $query->set('post_type', 'post'); замените на $query->set('cat', 'ид категории');
    Ответ написан
    Комментировать
  • Как учиться новому после рабочего дня?

    petermzg
    @petermzg
    Самый лучший программист
    Так учитесь новому, до начала рабочего дня. Вставайте раньше, учите нужное, затем на работу, а после работы отдых.
    Ответ написан
    7 комментариев
  • Как учиться новому после рабочего дня?

    Поработайте годик, не меньше, чтобы на следующей работе можно было предъявить хотя-бы год опыта. В свободное время ,если его не много, лучше изучать какие-то базовые вещи, теорию. Практику лучше стараться получать на работе, предлагая и обосновывая начальству какие-то вещи, которые будут способствовать развитию. Это не всегда получается, но много и не обязательно. Все равно толку будет не много.

    Через год начинайте ходить на собеседования. Вас пугают требования в описании вакансии? Когда я читаю требования на работе, где сейчас тружусь, то задаюсь вопросом "кто этот бред писал? и на хрена нам вот это все что там написано?". А все потому что пишут тексты HRы со слов "кого-то из отдела", сказанных несколько лет назад.
    В реальности по моим наблюдениям можем отказать довольно сильному разработчику потому что просто в данный момент вакансия не горит, а иногда, когда отдел завален работой, берем вполне себе средних, просто потому что срочно нужен. Аналогичная ситуация была и на предыдущей работе. Поэтому лично мое мнение - чтобы устроиться на работу надо обладать не только и не столько перечисленными в вакансии навыками, а скорее откликнуться в удачное время :) Ну и что-то знать конечно.

    И самое главное: два-три месяца работы в компании с более высоким уровнем разработки, чем у вас в данный момент, дадут вам больше, чем год бессонных ночей после работы. Поэтому не стоит пытаться сначала дорасти до определенного уровня, а потом устраиваться. Скорее всего не дорастете, только время потеряете. Изучайте базу и в бой!
    Ответ написан
    7 комментариев