Ответы пользователя по тегу PHP
  • Как сделать отправку формы на Вордпресс с помощью Аякс?

    Palych_tw
    @Palych_tw
    Типа веб-разработчик
    prevenDefault не хватает
    Ответ написан
    Комментировать
  • Как вывести новости только сегодня с сортировкой по дополнительному полю wordpress?

    Palych_tw
    @Palych_tw
    Типа веб-разработчик
    Написать три цикла (get_posts оставить один). Сортировать даже по мета полю не нужно. Просто в первом foreach сравниваем с "сегодня" - если сегодня - выводим пост, иначе - continue. Второй foreach с "Вчера", третий с "Завтра". Можно еще в зависимости от даты давать article разные классы,а потом через JS как-то их раскидывать.. но это, наверное, очень геморно)

    UPD
    <section class="post-list-thumbnail-index">
        <div class="title">Бесплатные прогнозы на футбол</div>
        <?php
        global $post;
        $args = array( 'posts_per_page' => 10, 'cat' => '-1,-4,-6', 'meta_key' => 'event-date-time', 'orderby' => 'meta_value_num' );
        $myposts = get_posts( $args );
        $temp_current_date = date('d-m-Y');
        
        //сегодня
        foreach( $myposts as $post ):
            $temp_event_date = get_field('event-date-time', $post->ID);
            $temp = substr($temp_event_date, 0,10);
            $current_date = date_create($temp_current_date);
            $event_date = date_create($temp);
            $interval = date_diff($current_date, $event_date);
            if ($interval->format('%R%a') == '+0') :
                setup_postdata($post); ?>
                <article class="clearfix">
                    <div class="thumb">
                        <a href="<?php the_permalink(); ?>">
                            <?php the_post_thumbnail('index-thumb'); ?>
                        </a>
                    </div>
                    <div class="article-text">
                        <div class="date">
                            <?php $cat = get_the_category(); ?>
                            <a href="<?php echo get_category_link($cat[0]->term_id); ?>"><?php echo $cat[0]->name; ?></a> » <?php echo $result; ?>
                        </div>
                        <div class="article-title">
                            <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                        </div>
                        <div class="text"><?php the_excerpt(); ?></div>
                    </div>
                </article>
            <?php else :
                 continue;
            endif;
        endforeach;
        
        //вчера
        foreach( $myposts as $post ):
            $temp_event_date = get_field('event-date-time', $post->ID);
            $temp = substr($temp_event_date, 0,10);
            $current_date = date_create($temp_current_date);
            $event_date = date_create($temp);
            $interval = date_diff($current_date, $event_date);
            if ($interval->format('%R%a') == '-1') :
                setup_postdata($post); ?>
                <article class="clearfix">
                    <div class="thumb">
                        <a href="<?php the_permalink(); ?>">
                            <?php the_post_thumbnail('index-thumb'); ?>
                        </a>
                    </div>
                    <div class="article-text">
                        <div class="date">
                            <?php $cat = get_the_category(); ?>
                            <a href="<?php echo get_category_link($cat[0]->term_id); ?>"><?php echo $cat[0]->name; ?></a> » <?php echo $result; ?>
                        </div>
                        <div class="article-title">
                            <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                        </div>
                        <div class="text"><?php the_excerpt(); ?></div>
                    </div>
                </article>
            <?php else :
                continue;
            endif;
        endforeach;
        
        //завтра
        foreach( $myposts as $post ):
            $temp_event_date = get_field('event-date-time', $post->ID);
            $temp = substr($temp_event_date, 0,10);
            $current_date = date_create($temp_current_date);
            $event_date = date_create($temp);
            $interval = date_diff($current_date, $event_date);
            if ($interval->format('%R%a') == '+1') :
                setup_postdata($post); ?>
                <article class="clearfix">
                    <div class="thumb">
                        <a href="<?php the_permalink(); ?>">
                            <?php the_post_thumbnail('index-thumb'); ?>
                        </a>
                    </div>
                    <div class="article-text">
                        <div class="date">
                            <?php $cat = get_the_category(); ?>
                            <a href="<?php echo get_category_link($cat[0]->term_id); ?>"><?php echo $cat[0]->name; ?></a> » <?php echo $result; ?>
                        </div>
                        <div class="article-title">
                            <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                        </div>
                        <div class="text"><?php the_excerpt(); ?></div>
                    </div>
                </article>
            <?php else :
                continue;
            endif;
        endforeach;
        wp_reset_postdata();?>
    </section>

    Возможно где-то отдебажить надо будет
    Ответ написан
  • Как сделать поиск только по 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', 'ид категории');
    Ответ написан
    Комментировать
  • Как вывести несколько категорий woocommerce?

    Palych_tw
    @Palych_tw
    Типа веб-разработчик
    'terms' => array('cables','PDU')
    Ответ написан
    2 комментария
  • Как в Wordpress отфильтровать записи в основном цикле по дате?

    Palych_tw
    @Palych_tw
    Типа веб-разработчик
    Смотрите 'date_query' wp-kama.ru/function/wp_query#parametry-daty-vremeni вам нужно в 'after' ставить текущую дату, ну или вчерашнюю, скорее всего, и "старые" посты не должны выводиться

    UPD
    add_action('pre_get_posts', 'date_filter');
    function date_filter( $query ){
        if ( ! is_admin() && $query->is_main_query() && !$query->is_singular() ) {
            $args = array (
                array(
                    'after'    => array(
                        'year'  => 2016,
                        'month' => 12,
                        'day'   => 1,
                    ),
                ),
            );
            $query->set('date_query', $args);
        }
    }

    Подставьте нужные условия и нужную дату.
    Ответ написан
  • Как вывести контент конкретной страницы в футере через get_posts()?

    Palych_tw
    @Palych_tw
    Типа веб-разработчик
    <div class="footer" id="id1">
        
        <?php $mwp = get_post( $id ); ?>
          <p class="t_text">
            <?php echo $mwp->post_title;?>
            <?php echo $mwp->post_content;?>
          </p>
      </div>

    А конкретно в вашем примере вот это 'orderby' => array ('name'=>'Footer'), белиберда)
    wp-kama.ru/function/wp_query читаем документацию. Для get_posts все то же самое, что и для WP_Query
    Ответ написан
    7 комментариев
  • Как сделать, отображение цены в зависимости от количества товара прямо в карточке товара?

    Palych_tw
    @Palych_tw
    Типа веб-разработчик
    6e41f69aee52432fb5aa4bfcee10bb4c.png

    Такой вариант вам подойдет? могу скинуть готовый код.

    UPD. Вам нужно переопределить шаблон quantity-input.php (скопируйте себе в тему)... и вот такой код в него вставить
    <?php
    if ( ! defined( 'ABSPATH' ) ) {
        exit; // Exit if accessed directly
    }
    $post_type = get_post_type( $post_id );
    if ($post_type=='product') {
    global $product;
    ?>
    <div class="quantity">
        Количество: <button type="button" id="remove_one">-</button><input type="text" name="<?php echo esc_attr( $input_name ); ?>" value="<?php echo esc_attr( $input_value ); ?>" title="<?php echo esc_attr_x( 'Qty', 'Product quantity input tooltip', 'woocommerce' ) ?>" class="input-text qty text" size="4" pattern="<?php echo esc_attr( $pattern ); ?>" inputmode="<?php echo esc_attr( $inputmode ); ?>" /><button type="button" id="add_one">+</button>
        <div class="order-summ">Сумма: <span id="orderSumm"><?php echo $product->get_price();?></span> грн.</div>
    </div>
    <script>
        var price = jQuery('#orderSumm').html();
        var quantity;
        var summ;
        jQuery('#remove_one').on('click',function(){
            quantity = jQuery('input.qty').val();
            if (quantity <= 1) {
                summ = price*quantity;
                jQuery('input.qty').val(quantity);
                jQuery('#orderSumm').html(summ);
            } else {
                quantity--;
                summ = price*quantity;
                jQuery('input.qty').val(quantity);
                jQuery('#orderSumm').html(summ);
            }
        });
        jQuery('#add_one').on('click',function(){
            quantity = jQuery('input.qty').val();
            quantity++;
            summ = price*quantity;
            jQuery('input.qty').val(quantity);
            jQuery('#orderSumm').html(summ);
        });
        jQuery('input.qty').keyup(function(){
            var removedText = $(this).val().replace(/\D/, '');
            jQuery(this).val(removedText);
            quantity = jQuery(this).val();
            summ = price*quantity;
            jQuery('input.qty').val(quantity);
            jQuery('#orderSumm').html(summ);
        });
    
    </script>
    <?php } else {?>
        <div class="quantity">
            <input type="number" step="<?php echo esc_attr( $step ); ?>" min="<?php echo esc_attr( $min_value ); ?>" max="<?php echo esc_attr( $max_value ); ?>" name="<?php echo esc_attr( $input_name ); ?>" value="<?php echo esc_attr( $input_value ); ?>" title="<?php echo esc_attr_x( 'Qty', 'Product quantity input tooltip', 'woocommerce' ) ?>" class="input-text qty text" size="4" pattern="<?php echo esc_attr( $pattern ); ?>" inputmode="<?php echo esc_attr( $inputmode ); ?>" />
        </div>
    <?php }?>
    Ответ написан
    6 комментариев
  • Вывод атрибутов в Woocommerce для незарегестрированынх пользоватлей?

    Palych_tw
    @Palych_tw
    Типа веб-разработчик
    Вы же в этой строке
    get_the_terms( $product->id, 'pa_color');
    запрашиваете атрибуты только цвета, вот и получаете Blue везде. Вставьте код в вопрос по-человечески, чтоб все можно было прочитать, вместе с разметкой

    UPD Лучше вообще вот так.. просто удалите табу с характеристиками для залогиненых пользователей
    Этот код в functions.php
    add_filter( 'woocommerce_product_tabs', 'woo_remove_product_tabs', 98 );
    
    function woo_remove_product_tabs( $tabs ) {
    
        if ( is_user_logged_in() ) {
               unset( $tabs['additional_information'] );  	
        }
    
        return $tabs;
    
    }


    UPD 2 Копируете product_attributes.php себе в тему
    И в цикл вывода атрибутов вставляете свое условие:
    <?php $names = array ('один атрибут', 'второй атрибут') //имена атрибутов, которые не будем показывать
    
    foreach ( $attributes as $attribute ) :
       
       if ( !is_user_logged_in() && in_array($attribute['name'], $names ) { 
             continue;  //пропускаем атрибут
        }
        if ( empty( $attribute['is_visible'] ) || ( $attribute['is_taxonomy'] && ! taxonomy_exists( $attribute['name'] ) ) ) {
          continue;
        } else {
          $has_row = true;
        }
        ?>
        <tr class="<?php if ( ( $alt = $alt * -1 ) == 1 ) echo 'alt'; ?>">
          <th><?php echo wc_attribute_label( $attribute['name'] ); ?></th>
    //далее остальной файл
    Ответ написан
    3 комментария
  • Как сделать активной ссылку в меню навигации wordpress?

    Palych_tw
    @Palych_tw
    Типа веб-разработчик
    В functions.php пишем
    add_action( 'after_setup_theme', 'mytheme_setup' ); 
    function mytheme_setup() {
            add_theme_support( 'menus' );
    }

    Потом идете в админку Внешний вид -> Меню. Создаете меню, имя на латиннице. Накидываете туда ссылки, страницы, записи.
    Идете в ваш шаблон, и в нужном месте выводим меню с помощью
    wp_nav_menu()
    Читаем доку здесь wp-kama.ru/function/wp_nav_menu
    Должно получиться примерно так
    <?php
                    wp_nav_menu( array(
                        'menu'            => 'название_меню',
                        'container'       => 'nav', // ну или div
                        'container_class' => 'класс контейнера',
                    ) );
                    ?>


    WP отслеживает активный пункт самостоятельно, только стили пропишите.
    Ответ написан
    Комментировать
  • Как редактировать файлы темы через редактор wordpress?

    Palych_tw
    @Palych_tw
    Типа веб-разработчик
    Зависит от того как работает PHP. Если "как модуль apache" то и запускается он под пользователем апач - www-data, если владелец папки wp-content не www-data, а ваш пользователь или вообще root, то нужны права 755. Ставьте сразу на wp-content, а то не сможете ничего вообще, ни плагин обновить, ни картинку залить. Бывает на VPSках еще такая штука, когда WP просит в админке FTP доступ, решается так :
    Решение данной проблемы простое, необходимо в файл wp-config.php дописать в самый конец строку:

    define('FS_METHOD', 'direct');
    Либо более «правильный» код:

    if(is_admin()) {
    add_filter('filesystem_method', create_function('$a', 'return "direct";' ));
    define( 'FS_CHMOD_DIR', 0751 );
    }
    После чего WordPress должен обновляться в нормальном режиме.


    Ну и права меняйте же рекурсивно на все содержимое папки, на файлы 644 ставьте.
    Ответ написан
    1 комментарий
  • Как сделать форму поиска рабочей?

    Palych_tw
    @Palych_tw
    Типа веб-разработчик
    Вы откуда пример то брали? В WP есть дефолтная форма поиска. которая подключается через get_search_form(); (если в теме нет шаблона searchform.php). Здесь есть примеры кода дефолтной рабочей формы wp-kama.ru/function/get_search_form

    Все id и name нужно сохранить, а стилизовать можете как хотите.
    Ответ написан
  • Как установить тему для WooCommerce?

    Palych_tw
    @Palych_tw
    Типа веб-разработчик
    у вас в теме есть файл woocommerce.php, этот шаблон отвечает за вывод страниц магазина. К нему подключается header и footer через get_header и get_footer, а так же get_sidebar (если есть сайдбар). Создайте другие футер и хедер для магазина, например, header-shop.php и подключайте в шаблоне магазина как get_header('shop'). Футер аналогично. А вывод магазина уже кастомизируйте как вам нужно. (хедер и футер можете взять из другой темы, какая вам нужна.. ну и шаблоны магазина тоже)
    Ответ написан
    Комментировать
  • Как в woocommerce задать единицу измерения?

    Palych_tw
    @Palych_tw
    Типа веб-разработчик
    wp-content/plugins/woocommerce/templates/global/quantity-input.php - этот шаблон выводит поле ввода
    Копируете себе в wp-content/themes/тема/woocommerce/global/quantity-input.php и изменяете разметку как вам нужно.
    Ответ написан
  • Как внедрить в шаблон wp логин бар?

    Palych_tw
    @Palych_tw
    Типа веб-разработчик
    Проверяете залогинен ли пользователь через is_user_logged_in( ) и, в зависимости от результата, выводите разный набор ссылок войти/выйти. Например, echo wp_logout_url( ) выведет ссылку на выход. Остальное тоже можно нагуглить. А вот кабинет/профиль вроде в WP базовом нет, сразу админка.
    Ответ написан
    Комментировать
  • Как правильно вставить переменную в массив?

    Palych_tw
    @Palych_tw
    Типа веб-разработчик
    $blog1 = array(1,2,3,4)
    $q = new WP_Query(array('post__in' => $blog1));
    echo $q;


    Даже документация на этом акцентирует внимание 13d0533c71b041bc8b2b5362dfbbfd3b.png
    Ответ написан
  • Как сделать слайдшоу на чистом css в цикле?

    Palych_tw
    @Palych_tw
    Типа веб-разработчик
    Почему не получается в цикле вывести два раза? код покажите.
    Если нужно именно два списка, то делаем так
    <ul id="slider">
    <?php
    foreach ( $attachment_ids as $at_id ) { ?>
      <li id="<?php echo $at_id?>">
        <img src="<?php echo wp_get_attachment_link($at_id,'full');?>">
    </li>
     <?php  } ?>
    </ul>
     <ul id="thumb">
    <?php
    foreach ( $attachment_ids as $at_id ) { ?>
      <li>
        <a href="#<?php echo $at_id?>">
        <img src="<?php echo wp_get_attachment_link($at_id,'thumbnail');?>">
        </a>
    </li>
     <?php  } ?>
    </ul>
    Ответ написан
    2 комментария
  • Несколько переменных с разных массивов в одном блоке разметки html?

    Palych_tw
    @Palych_tw
    Типа веб-разработчик
    Если я правильно понял, данные попарно за один раз? Количество элементов в массивах одинаковое?
    Можно так
    $arA = array( 1,2,3,4,5,6);
    $arB = array (7,8,9,10,11,12);
    $i= 0;
    foreach ($arA as $a ){
        echo '<p>';
        echo $a;
        echo $arB[$i];
        echo '</p>';
        $i++;
    }
    Ответ написан
    2 комментария
  • Как вывести ОДИН пост из категории в WordPress?

    Palych_tw
    @Palych_tw
    Типа веб-разработчик
    Может кто подскажет, где я туплю.

    have_posts($post_id) - вот это вообще откуда? и вот это the_post($post_id)
    Эти функции не принимают никаких аргументов.
    в get_the_category(); нужно передавать ID поста. По умолчанию используется ID текущего поста в цикле.
    next_post_link и previous_post_link Используются только на страницах единичной записи. Любые функции пагинации и навигации работают только с основным запросом (global $wp_query).
    showposts устарело, используйте posts_per_page
    Объясните контекст задачи. На какой странице вы хотите получить пост и как вы его хотите выбрать.

    А к чему такие трудности вообще? Если вы хотите вывести пост, используйте шаблон single.php или шаблон для нужного post-type. Там напишите ОБЫЧНЫЙ базовый цикл БЕЗ всяких лишних аргументов, WP сам выведет нужный пост. А для навигации вместо next_post_link и previous_post_link используйте, соответственно get_next_post_link() и get_previous_post_link() . В них можно задать логический параметр $in_same_term для вывода ссылки на пост из ТОЙ ЖЕ рубрики.
    Ответ написан
    Комментировать
  • Как заменять переменную в шаблоне страницы wordpress через админ панель?

    Palych_tw
    @Palych_tw
    Типа веб-разработчик
    Из вопроса непонятно где вы хотите использовать эту переменную. На всем сайте? Или установаливать её каждый раз в разных постах. Если первое, то создаете страницу с настройками темы. Задаете переменную один раз и используете на всем сайте, ан любой странице. Например вот тут пример www.internet-technologies.ru/articles/article_2084.html . Если нужно переменную задавать каждый раз в отдельном посте, то используйте произвольные поля или плагин для произвольных полей ACF. В платной версии ACF также есть возможность создания страницы с опциями темы.
    Ответ написан
    1 комментарий