• Как сделать разные дизайны для разных категории на Wordpress?

    irtek
    @irtek
    Wordpress-addicted
    В данном вопросе масса решений:

    Во-первых, можете создавать файлы category-name.php под каждую категорию и там делать любой дизайн

    Во-вторых, вы можете написать код, где подменять шаблон страницы в зависимости от категории в запросе можно централизованно повесить на ху wp_loaded или wp_init проверки либо в едином шаблоне категории
    if( in_category( 'category' ) ) include('base-category.php);
    else include( 'default-template.php' );


    В-третьих, можно посмотреть плагины на эту тему.
    https://wordpress.org/plugins/tags/category-template/
    Их правда маловато и что-то давно не обновлялись
    Ответ написан
    Комментировать
  • Как настроить чпу в wordpress?

    irtek
    @irtek
    Wordpress-addicted
    Вам тогда нужно обновить ЧПУ внутри WP. Добавьте следующий код в functions.php вашей темы

    function rewrites_init_q1226714( $rules ) {
    	add_rewrite_rule( 'catalog/offer/([0-9]+)$', 'index.php?pagename=catalog/offer&id=$matches[1]', 'top' );
    
    	return $rules;
    }
    
    add_action( 'init', 'rewrites_init_q1226714' );


    На всякий случай после добавления кода зайдите в Настройки - Постоянные ссылки и пересохраните настройки, чтобы обновить ЧПУ.

    Здесь по урлу /catalog/offer/123 откроется страница /catalog/offer и в ней будет $_GET параметр id с 123
    Соответственно у вас должна быть страница catalog к ней прикреплена страница offer с родительской страницей catalog и у страницы offer в шаблоне вы получите GET параметр с id

    Работая со вторым блоком, где index.php?pagename вы можете открывать там любой пост тип, категорию, тэг и т.п. меняя параметры, вплоть до конкретного ?post=123 и т.д.
    Ответ написан
    4 комментария
  • Как сдвинуть виджет на несколько px?

    irtek
    @irtek
    Wordpress-addicted
    Можете так попробовать
    margin-left: -8%;
    Ответ написан
    Комментировать
  • Таксономия или произвольные поля wordpress?

    irtek
    @irtek
    Wordpress-addicted
    Таксономии это одно из самых узких мест в WP по производительности. Работа с ними происходит в 3 таблицах + связь с основной таблицей _posts. Поэтому в известном плагине Woocommerce если добавить массово атрибуты к товарам, построенные на таксономиях, то сайт начинает сильно тормозить.

    Проще и эффективнее попробовать использовать мета поля. Если формировать свои запросы, то с мета полями будет проще и производительнее создавать запросы.

    Для максимальной производительности для доски объявлений лучше создать свои таблицы с параметрами и работать с ними уже своими запросами.
    Ответ написан
    Комментировать
  • Как обработать post запрос на node.js с фронта на js?

    irtek
    @irtek
    Wordpress-addicted
    У Node.js есть встроенный сервер http + модуль fs для работы с файловой системой. На официальном сайте есть готовый код для этого
    https://nodejs.org/en/knowledge/HTTP/servers/how-t...
    Вы можете на Node.js создать файл с сервером для определенного порта и запустить его командой node server.js в таком случае у вас запустится http сервер, который будет отвечать на ваши запросы из браузера по определенному порту localhost:8080 допустим. Далее всё будет как на php, сможете отправлять на него запросы POST или GET, выполнять необходимые вам операции и отдавать с бэкэнда нужный ответ браузеру или скрипту.
    Ответ написан
    Комментировать
  • Как разом удалить все медиа в wordpress?

    irtek
    @irtek
    Wordpress-addicted
    DELETE FROM `wp_posts` WHERE `post_type` = "attachment";
    DELETE FROM `wp_postmeta` WHERE `meta_key` = "_wp_attached_file";
    DELETE FROM `wp_postmeta` WHERE `meta_key` = "_wp_attachment_metadata";


    Эти 3 запроса в базе данных удалят все основные записи о медиа, если не создавали каких-то индивидуальных полей для изображений.
    Ответ написан
    1 комментарий
  • Как получить текст выбранного option'а?

    irtek
    @irtek
    Wordpress-addicted
    В вашей схеме так. Найти option:selected и получить его text

    $($this).parents('.ftovrp').find('#tovrazmer').find('option:selected').text();
    Ответ написан
    1 комментарий
  • Как в json файл записать новый объект node js?

    irtek
    @irtek
    Wordpress-addicted
    const fs = require('fs');
    let rawdata = fs.readFileSync('my.json'); // Читаем файл. Название файла поменять на свое
    let parseddata= JSON.parse(rawdata); // парсим и получаем JS объект из строки
    // Здесь совершаем операции с объектом JS
    Например, добавляем объект в массив
    parseddata.push({
     "name": "AUTO1",
            "price": 30,
            "discount": 100,
            "img": "https://i.imgur.com/36GYPaK1.png",
            "maxLPrizes": 5,
    });
    // Превращаем обратно в строку
    let data = JSON.stringify(parseddata);
    // Пишем в файл
    fs.writeFileSync('my.json', data);
    Ответ написан
    Комментировать
  • Как получить данные из этого массива?

    irtek
    @irtek
    Wordpress-addicted
    Есть соответствующие методы для получения данных из массива данных data данного объекта
    $product_type  = $data->get_type(); 
    $product_id    = $data->get_id();
    $product_name  = $data->get_name();
    $product_sku   = $data->get_sku(); 
    $product_price = $data->get_price();
    Ответ написан
    Комментировать
  • Не выводятся поля ACF после вывода через WP_Query как исправить?

    irtek
    @irtek
    Wordpress-addicted
    После endwhile(); допишите функцию wp_reset_postdata(); которая вернет глобальную переменную $post в исходное состояние.

    endwhile(); wp_reset_postdata();
    Ответ написан
    Комментировать
  • Как реализовать фильтр постов с помощью select?

    irtek
    @irtek
    Wordpress-addicted
    Создаете select, который при изменении будет добавлять к урлу get параметр disctict, допустим с номером района 1,2,3
    <select onchange="location=value">
            <option value="" selected="selected">Выбрать район</option>
            <option value="?district=1">Район 1</option>
            <option value="?district=2">Район 2</option>
            <option value="?district=3">Район 3</option>
        </select>


    В php коде выводите районы (допустим они в пост типе districts) запросом, например
    $disctricts = new WP_Query(['post_type' => 'disctricts', 'meta_key' => 'disctrict', 'meta_value' => $_GET['disctrict']]);
    
     // далее удобным вам способом выводите районы из массива $disctricts

    где указывается meta_key ваше поле в ACF,а в meta_value перехватываете get параметр с номером района.
    Ответ написан
    Комментировать
  • Как сделать так, чтобы стили темы не трогали wp-admin?

    irtek
    @irtek
    Wordpress-addicted
    В функции подключения стилей и скриптов оберните в условие
    if( ! is_admin() ) {
    // здесь стили
    }
    Ответ написан
    Комментировать
  • Как в WP делать переадресацию url в в зависимости от utm метки?

    irtek
    @irtek
    Wordpress-addicted
    В файл functions.php темы

    add_action( 'template_redirect', 'toster_q_1004505_redirect' );
    
    function toster_q_1004505_redirect() {
    
    	if ( ( isset( $_GET['link'] ) && ! $_GET['link'] ) || ! isset( $_GET['link'] ) ) {
    
    		$url = '/example'; // Куда переадресуем, если utm метка link пустая или отсутствует
    		wp_safe_redirect( $url ); // либо функция wp_redirect($url); если нужно переадресовать на внешний url
    		exit();
    
    	}
    
    }


    Замените функцию wp_safe_redirect($url) на функцию wp_redirect($url) если вам нужно переадресовать на внешний сайт.
    Ответ написан
  • Как создать свой archive в wordpress?

    irtek
    @irtek
    Wordpress-addicted
    Понятие archive относится к post_type. Архив вы получаете если регистрируете свой пост тип через register_post_type с параметром ['has_archive' => true] в таком случае подключится шаблон archive-works.php, если post_type называется 'works' и откроется по адресу /works.

    Для таксономии вы можете создать шаблон taxonomy-our_work.php, который будет выводиться по адресу /our_work, в данном шаблоне вы сможете вывести посты с нужными вам терминами.
    Ответ написан
    Комментировать
  • Как создать много постов в WP для теста?

    irtek
    @irtek
    Wordpress-addicted
    Вот хороший
    https://wordpress.org/plugins/fakerpress/

    Есть репозиторий с xml тестовыми данными для темы, готовые к импорту если необходимо
    https://github.com/WPTT/theme-test-data
    Ответ написан
    1 комментарий
  • Как в wordpress перехватить get запрос?

    irtek
    @irtek
    Wordpress-addicted
    1. Грубый метод
    Создать папку sitemap в корне и создать там index.php
    Если нужны функции WordPress и доступ к базе, то включить в файл основной файл загрузки WP

    require '../wp-load.php';

    2. Если нужно прямо в WordPress
    Скрипт нужно повесить на хук "init", который происходит до передачи заголовков страницы.
    Данный код добавить в functions.php темы

    add_action( 'init', 'qna_habr_q_971257' );
    
    function qna_habr_q_971257() {
    
    	global $wp;
    
    	// Получить базовый url
    	$current_url = home_url();
    
    	// Получить текущий url
    	$current_url = $current_url . $_SERVER['REDIRECT_URL'];
    
    	// Получить ID поста/страницы
    	$id = url_to_postid( $current_url );
    
      // Получить массив get запроса
    	print_r( $_GET );
    
    
    	// Здесь ваш скрипт... //
    
    
    	// Завершить функцию выходом если не хотите продолжать загружать страницу
    	wp_die();
    
    }


    Для условия определения страницы, на которой находимся я привёл пример нескольких функций. Вы можете определить по данным из глобального $_SERVER, можете воспользоваться определением ID страницы по url и определять по ID на какой странице находитесь. Но учтите, что is_page() функция на данном этапе загрузки еще не работает.

    И завершить функцию можно выходом wp_die(); если вам не нужно продолжение загрузки страницы.
    Ответ написан
    1 комментарий
  • Возможны ли одинаковые имена констант в разных файлах JavaScript?

    irtek
    @irtek
    Wordpress-addicted
    В разных файлах при модульной разработке как у вас возможны. Это независимые блоки.
    В случае обычной разработки на JavaScript, когда вы 2 файла просто объединяете методом конкатенации в один, в таком случае это превращается просто в один большой файл, тогда нет, т.к. две константы появляются в одном коде на одном уровне.
    Ответ написан
    Комментировать
  • Не выводятся посты через get_posts?

    irtek
    @irtek
    Wordpress-addicted
    'category' в функции get_posts используются если вы хотите указать категорию родной записи Записи WordPress с пост типом post, в остальных случаях при создании custom post_type вам необходимо работать с таксономиями

    # получаем записи из рубрики
        $myposts = get_posts( array(
          'numberposts' => -1,
          'orderby'     => 'post_date',
          'post_type'     => 'programms', 
          'order'       => 'DESC',
          'type_programms'    => $cat->slug
        ) );


    Попробуйте так
    Ответ написан
    1 комментарий
  • Как можно массово заменить ссылку в содержимом записи Wordpress?

    irtek
    @irtek
    Wordpress-addicted
    Плагин https://ru.wordpress.org/plugins/better-search-replace/ для поиска и замены по базе.

    Таблица записей — wp_posts

    Только указывайте как можно более точный поиск, чтобы не заменились все участки похожего текста. Иначе ко всем урлам в тексте добавится "catalog"
    Ответ написан
    Комментировать
  • Как присвоить стиль к первой строке записей Bootstrap?

    irtek
    @irtek
    Wordpress-addicted
    Можете добавить простой счетчик в цикл
    Добавил переменную $i, которая увеличивается на 1 при прохождении каждого цикла
    По условию if($i == 1) выводите нужный вам стиль выделения для первого поста в списке.

    <?php $query = new WP_Query([
        'meta_query' => [
            'relation' => 'OR',
            ['key' => '_glsr_ranking', 'compare' => 'NOT EXISTS'], // this comes first!
            ['key' => '_glsr_ranking', 'compare' => 'EXISTS'],
        ],
        'order' => 'DESC',
        'orderby' => 'meta_value_num',
        'post_status' => 'publish',
        'post_type' => 'website', // change this as needed
        'posts_per_page' => -1, // change this as needed
    ]);
    
    $i = 0; // Перед циклом установить переменную
    if( $query->have_posts() ) {
        while( $query->have_posts() ) {
            $query->the_post(); 
            $i++; // Внутри цикла увеличивать счетчик на 1
            ?>
       <div class="col-lg-4 col-md-6 col-sm-12 layout-  <?php if($i == 1) { ?>selected<?}?>">
    
           <article
               <?php post_class('fxcatalog-post fxcatalog-post-a fxcatalog-box '. fxcatalog_highlight_post_class() ); ?>>
    
               <?php if( $fimg = fxcatalog_get_featured_image( 'a'. $post_col ) ) : ?>
               <div class="entry-image">
                   <a href="<?php echo esc_url( get_permalink() ); ?>"
                       title="<?php echo esc_attr( get_the_title() ); ?>"><?php echo fxcatalog_wp_kses( $fimg ); ?></a>
                   <div class="entry-category">
                       <?php if( $icon = fxcatalog_get_option('lay_a_icon') ): ?>
                       <?php echo fxcatalog_get_format_icon(); ?>
                       <?php endif; ?>
    
                       <?php if( fxcatalog_get_option('lay_a_cat') ) : ?>
                       <?php echo fxcatalog_get_category(); ?>
                       <?php endif; ?>
                   </div>
               </div>
               <?php endif; ?>
    
    
               <div class="box-inner-p">
                   <div class="box-inner-ellipsis hidekant">
    
    
    
                   </div>
                   <div class="short_description"><?php the_field('short_description'); ?></div>
                   <?php if ( get_field('active_link') == true ) { ?>
    
                   <a class="website_urla"
                       href="https://<?php the_field('website_url'); ?>"><?php the_field('website_url'); ?></a>
    
                   <?php } else { ?>
    
                   <a class="website_urla"><?php the_field('website_url'); ?></a>
    
                   <?php } ?>
    
                   <div class="entry-meta"><span class="rattext">Rating
                           <?php echo do_shortcode('[site_reviews_summary assigned_posts="post_id" hide="bars,rating,summary"]'); ?></span>
                       <a class="linktopost" target="_blank" href="<?php echo get_permalink(); ?>">
                           <div class="readmorepost">Read more</div>
                       </a>
                       <a href="<?php echo esc_url( get_permalink() ); ?>#comments">
                           <div class="custommeta meta-item homepagecommentscount">
                               <div class="singleotzivi"><i style="line-height: 1.7;" class="far fa-comment-alt"></i>&nbsp;
                                   <?php echo do_shortcode('[site_reviews_summary assigned_posts="post_id" hide="bars,if_empty,rating,stars"]'); ?>
                               </div>
           </article>
    
       </div>
    Ответ написан
    Комментировать