Задать вопрос
Ответы пользователя по тегу WordPress
  • Как в Woocommerce добавить произвольное поле в вариативный товар?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    Чего же вы все уцепились так в эти плагины для полей?
    Использовать ACF и его аналоги это плохая практика, это очень плохая практика, это очень очень плохая практика.
    И у WordPress и у WooCommerce есть соответствующее API

    Для вариативного товара маленький простой код.
    add_action( 'woocommerce_product_after_variable_attributes', 'cr_variable_fields', 10, 3 );
    add_action( 'woocommerce_product_after_variable_attributes_js', 'cr_variable_fields_js' );
    add_action( 'woocommerce_process_product_meta_variable', 'save_cr_variable_fields', 10, 1 );
    
    /**
     * Создает новое поле
    */
    function cr_variable_fields( $loop, $variation_data, $variation ) {
    ?>
    	<tr>
    		<td>
    			<?php
    			woocommerce_wp_text_input( 
    				array( 
    					'id'          => '_text_field['.$loop.']', 
    					'label'       => __( 'Мое текстовое поле', 'woocommerce' ), 
    					'placeholder' => __( 'Подсказка', 'woocommerce' ), 
    					'desc_tip'    => 'true',
    					'description' => __( 'Введите ваше значение.', 'woocommerce' ),
    					'value'       => get_post_meta( $variation->ID, '_text_field', true )
    				)
    			);
    			?>
    		</td>
    	</tr>
    	
    <?php
    }
    
    /**
     * Создает поле нового варианта
    */
    function cr_variable_fields_js() {
    ?>
    	<tr>
    		<td>
    			<?php
    			woocommerce_wp_text_input( 
    				array( 
    					'id'          => '_text_field[ + loop + ]', 
    					'label'       => __( 'Мое текстовое поле', 'woocommerce' ),  
    					'placeholder' => __( 'Подсказка', 'woocommerce' ),
    					'desc_tip'    => 'true',
    					'description' => __( 'Введите ваше значение.', 'woocommerce' ),
    					'value'       => ''
    				)
    			);
    			?>
    		</td>
    	</tr>
    <?php
    }
    
    /**
     * Сохраняет поле
    */
    function save_cr_variable_fields( $post_id ) {
    	if (isset( $_POST['variable_sku'] ) ) :
    		$variable_sku          = $_POST['variable_sku'];
    		$variable_post_id      = $_POST['variable_post_id'];
    		
    		$_text_field = $_POST['_text_field'];
    		for ( $i = 0; $i < sizeof( $variable_sku ); $i++ ) :
    			$variation_id = (int) $variable_post_id[$i];
    			if ( isset( $_text_field[$i] ) ) {
    				update_post_meta( $variation_id, '_text_field', stripslashes( $_text_field[$i] ) );
    			}
    		endfor;
    
    	endif;
    }
    Ответ написан
  • Как изменить верстку woocommerce меню категорий?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    простейший вариант, добавляете дочернюю тему, там добавляете свой класс MY_Product_Cat_List_Walker - он же модифицированный WC_Product_Cat_List_Walker, в эту же тему закидываете шаблоны которые вам надо изменить и садомириуете их там как хотите, до тех пор пока они есть в теме woocommerce, будет пользовать их, а не те которые под его капотом
    Ответ написан
  • Есть-ли плагин для wordpress, позволяющий отобразить записи рубрики в таком виде?

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

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    woocommerce практически все выводит через Экшены и фильтры
    в данном случае вам надо вешаться на
    'woocommerce_shop_loop_item_title'
    из стандартного вывода там отличается только наличие описания
    выводить так
    add_action('woocommerce_shop_loop_item_title' ,'woocommerce_template_single_excerpt',20);

    для радиобаттонов надо поменять шаблон woocommerce/templates/single-product/add-to-cart/variable.php
    там определен селект
    Ответ написан
    Комментировать
  • Иконка в заголовке поста wordpress?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    Без всяких проверок, ваша проблема решается тупо в css.
    Грамотно построенный вывод записи в цикле выглядит так

    <article id="post-<?php echo $post->ID; ?>" <?php post_class(); ?>>
    // содержимое записи
    </article>


    Один из классов возвращаемых функцией post_class() выглядит так %taxonomy%-%term%, для категории со слагом foo, класс будет выглядеть так - category-foo

    В css вставляем что типа такого
    article.category-foo:before {
        width: 30px;
        height: 30px;
        content: ' ';
        background-image: url('%img-url%');
        display: block;
        position: absolute;
        top: -25px;
        left: -25px;
    }

    можно комбинировать с body_class
    Ответ написан
    Комментировать
  • Русские имена файлов на web сервере?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    Имена файлов на кирилице - это плохо, даже если на конкретном все чудно пашет есть не кислая вероятность, что при переносе они грохнуться.

    Подключите любую транслитерацию и подвесьте на sanitize_file_name
    add_filter('sanitize_file_name', '%ваша функция транслитерации%');


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

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    Что бы отсортировать по клику используйте ajax
    Сортировка по дате из произвольного поля зависит от того, как вы эту дату храните, если в Unix формате или как нибудь так 20150108
    Можно пользовать стандарное APi движка

    $args = array(
        'orderby' => array(
            'meta_value_num',
        ),
        'order' => 'ASC',
        'meta_key' => '%ключ поля%'
    );


    Если храните просто как дату, то вариантов тоже море, идете в гугл, набираете
    "ordering wordpress post by custom field date" и выбираете по вкусу
    Ответ написан
    Комментировать
  • На первой странице пагинации WordPress 9 записей на остальных 8 при AJAX подгурзки?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    Решение не работает, потому, что вы не понимаете того, что вы делаете
    1. в js скрипте не видно, что же за true_posts вы передаете в переменной query, но судя по обработчику вы там передаете основные параметры запроса в виде сериализованного массива, это бредовое решение. передавать достаточно номер страницы пагинации. (На работу или не работу пагинации это не влияет, но это не верно, и это охрененных размеров дыра, через которую получить из вашей базы можно все что хочешь). Запрос надо формировать в обработчике целиком.
    2. то что вам не подходит, подходит если делать так

    $args = unserialize(stripslashes($_POST['query']));
        $args['paged'] = $_POST['page'] + 1; // следующая страница
        $args['post_status'] = 'publish';
           $first_page_post_count = 9;
            $empty_pages_post_count = 8;
    
            if ($args['paged']  > 1) {
                $posts_per_page =  $empty_pages_post_count;
                if ($args['paged']  == 2) {
                    $offset = $first_page_post_count;
                } else {
                    $offset = $first_page_post_count + ( $empty_pages_post_count * ($args['paged']  - 2));
                }
            } else {
                $offset = 0;
                $posts_per_page = $first_page_post_count;
            }
            $args['posts_per_page'] =>$posts_per_page;
            $args['offset'] => $offset;
    $q = new WP_Query($args);
    Ответ написан
    5 комментариев
  • Как можно добавить добавить какой-либо метод шифрования?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    Движок хранит пароль в MD5,
    При создании пароля он его солит и то ли 5 то ли 8 раз прогоняет через MD5.
    Сейчас народ все больше и больше возмущается на тему того, что MD5 уже не Торт. И в какой то мере таки да, и вычислительные мощности уже такие, что Deep Blue смущенно краснеет, и база хэшей тоже не кислая.
    Но если юзерь задает пароль типа даты рождения, или имени первой подруги которой присунул или подобные перлы, то тут бессилен любой метод шифрования.
    Запрещайте использование небезопасных паролей, добавляйте защиту от брутофорса. И этого хватит за глаза, чай не сайт Федеральной резервной системы строите.

    И да, изменить сам алгоритм шифрования малой кровью можно, api это позволяет, но из за особенностей движка это останется тот же MD5 и те же 128 бит

    Можно изменить и большой кровью, но вы это точно не осилите, раз вам было тяжело разобраться с достаточно подробно расписанной регистрацией.
    Ответ написан
    Комментировать
  • Насколько этот код безопасен?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    Что, именно вас смущает?
    так то
    Достаточно стремный вариант регистрации, все что делает добавляет шорткод с формой реги и напрямую вставляет юзеря с минимальной валидацией, кроме того есть несколько мелких ошибок.
    Стандартная регистрация остается доступной, из апи только insert_user.

    Если почитаете оригинал, то там в комментах на критику автор отвечает, не нравится сделайте лучше.

    Чисто любопытства для, а чем вас не устраивает тот вариант который я давал раньше?
    Ответ написан
    5 комментариев
  • Как переопределить функцию основной темы WordPress (тема StoreFront)?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    Если в ней нет фильтров, или проверки на наличие другой функции с тем же именем, то никак
    Ответ написан
    Комментировать
  • Как исправить ошибку при активации плагина?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    1.
    register_activation_hook(__FILE__, 'activate_options');

    соответственно ищет и не находит - предупреждение один
    2.
    add_options_page('RDolls Category Adder', 'RDolls Category Setting', 8, __FILE__, 'plugin_setting_page');

    Использование уровней считается устаревшим еще со времен царя гороха. Надо пользовать возможности, вот так
    add_options_page('RDolls Category Adder', 'RDolls Category Setting', 'manage_options', __FILE__, 'plugin_setting_page');

    3. Если не пользуете никаких отладчиков смотрите хотя бы в логи сервера, будет сильно проще жить
    Ответ написан
    Комментировать
  • Как создаются полностью изменяемые темы?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    Все настройки тем построены, как правило, на 4-х функциях
    codex.wordpress.org/%D0%A1%D0%BF%D1%80%D0%B0%D0%B2...
    codex.wordpress.org/%D0%A1%D0%BF%D1%80%D0%B0%D0%B2...
    codex.wordpress.org/%D0%A1%D0%BF%D1%80%D0%B0%D0%B2...
    codex.wordpress.org/%D0%A1%D0%BF%D1%80%D0%B0%D0%B2...

    Используя их можно сделать все что угодно

    В Движок встроено API для кастомизации https://codex.wordpress.org/Theme_Customization_API
    но его, сильно не пользуют, в основном для десятка - другого настроек. Обычно пользуют всякие самописные решения, в настоящее время самым популярным является Redux https://reduxframework.com/
    Ответ написан
    2 комментария
  • Библиотека для оптимизации изображений?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    psliwa - хорошая, пользую достаточно часто.
    tinypng - нормальный вариант для блогов, с не сильно большим количеством фотографий, для больших фоток тоже норма но уже надо костыль, надо получать много Api ключей, и ставить счетчик, после каждых 500 картинок в месяц подставлять другой ключ
    kraken - не супер вариант, но там в платном варианте идет уже счет за вес картинок, а не количество 9$ за 2 гига не много, но результат у него не супер, часто для нормальной минимизации требуется по 2 - 3 прогона картинки
    Ответ написан
    Комментировать
  • Как в WordPress вывести изображение?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    Не ужели это так сложно?
    Идем в гугл, забиваем wp_get_attachment_image_src
    переходим по первой же ссылке в кодекс
    жмем в меню на Examples ->Default Usage
    получаем
    <?php 
    $attachment_id = 8; // attachment ID
    
    $image_attributes = wp_get_attachment_image_src( $attachment_id ); // returns an array
    if( $image_attributes ) {
    ?> 
    <img src="<?php echo $image_attributes[0]; ?>" width="<?php echo $image_attributes[1]; ?>" height="<?php echo $image_attributes[2]; ?>">
    <?php } ?>


    поиск занимает меньше времени, чем написать вопрос
    Ответ написан
    1 комментарий
  • Нужно ли знать php, чтоб создать шаблон wordpres?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    Для создания шаблона на wordpres знать ничего не надо вообще.
    Для создания темы на WordPress php тоже дело 128-е, достаточно полгода которые будет потрачены на создание уродца не способного к жизни пастись на тематических форумах и заливать их тупыми вопросами.

    Для создания простой, живорожденной темы под WordPress, надо знать как минимум:
    • PHP - хотя бы на среднем уровне
    • СSS - хотя бы на среднем уровне
    • HTML - хорошо
    • Codex WP
    Ответ написан
    3 комментария
  • Можете посоветовать лучшие плаины для Wordpress для создания курсов?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    На русском, и видимо бесплатно это к братьям Гримм, а так этого добра как грязи
    Ответ написан
    Комментировать
  • Redux slides (как сделать динамичными)?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    Для начала, надо разобаться, в том что вы делаете, в каком виде данные вам возвращаете, и как их обрабатывать.

    <div class="sider_container">
        <div class="slide_item">
            <?php if( ! empty( $brainiak['opt-slides'] ) ) {
                foreach ( $brainiak['opt-slides'] as $val )
                    echo '<img src="' . $val['image']. '" alt="' . $val['title'] .'" class="img-responsive">';
            } ?>
        </div>
    </div>


    для красоты кода можно сделать так
    printf('<img src="%s" alt="%s" class="img-responsive">', $val['image'], $val['title']);
    Ответ написан
    3 комментария