Ответы в темах

Просмотр 15 ответов — с 1 по 15 (всего 82)
  • с правами на таксу все нормально, т.к. термы, созданные через админку, открываются для редактирования, а созданные программно — нет

    Методом научного тыка было выявлено, что если в файле wp-admin/term.php в коде, начиная с 38 строки,

    if ( ! in_array( $taxonomy, get_taxonomies( array( 'show_ui' => true ) ) ) || ! current_user_can( 'edit_term', $tag->term_id )) {
    
    	wp_die(
    		'<h1>' . __( 'You need a higher level of permission.' ) . '</h1>' .
    		'<p>' . __( 'Sorry, you are not allowed to edit this item.' ) . '</p>',
    		403
    	);
    }

    убрать
    || ! current_user_can( 'edit_term', $tag->term_id )
    то в терм зайти можно. Соответственно, проблема в правах доступа к создаваемому программно терму. Как их можно так же программно поправить?

    Постоянные ссылки обновлял, если что.

    никто не сталкивался с таким?

    Насколько я знаю, нет функционала, чтобы один купон мог давать разную скидку на разные товары.
    Т.е. либо определенная скидка в %, либо определенная скидка в деньгах, либо скидка на всю корзину.
    Если, к примеру, есть товары:
    Товар 1 — 1000р и я хочу сделать скидку на него 100р (10%)
    Товар 2 — 3000р и я хочу сделать на него скидку 1500р (50%)
    то мне надо делать 2 купона. Так?

    А если таких товаров много, то надо делать много купонов.

    про купоны я в курсе.
    но если товаров несколько и на каждый надо сделать разную скидку?
    делать купон на каждый товар — конечно, вариант, но если товаров много, то для покупателя не удобно вводить множество купонов.

    спасибо, то, что надо.

    чуть-чуть погорячился 🙂
    в общем, на основе ссылки сделал так:

    register_activation_hook(__FILE__, 'woo_attr_export_check');
    function woo_attr_export_check()
    {
        include_once(ABSPATH . 'wp-admin/includes/plugin.php');
        if (!is_plugin_active('woocommerce/woocommerce.php')) {
            add_action(
                'admin_notices',
                function () {
                    echo '<div class="notice notice-error is-dismissible"><p>Плагин <a href="https://ru.wordpress.org/plugins/woocommerce/" rel="nofollow">WooCommerce</a> должен быть установлен и активен</p></div>';
                }
            );
            if (is_plugin_active('woocommerce-attr-to-brand/woo-attr-to-brand.php')) {
                deactivate_plugins('woocommerce-attr-to-brand/woo-attr-to-brand.php', true);
                if (isset($_GET['activate'])) {
                    unset($_GET['activate']);
                }
            }
        }
    }

    и не работает. Точнее, плагин не деактивируется если Woo не установлен.

    • Ответ изменён 4 года, 6 месяцев назад пользователем denism300.

    Разрешить — это значит дать право пользоваться плагином. Без права удаления/установки.
    К примеру, я хочу сделать роль для сеошника/таргетолога. Ему нужно иметь права для работы с определенными плагинами. Остальные плагины должны быть недоступны для данной роли.

    Неужели никто не знает?

    Штатный функционал позволяет завести другой адрес для доставки, если он отличается от платежного адреса.

    Да, но только один. Тут же смысл в том, чтобы была возможность добавлять неограниченное количество контрагентов.

    Чтобы завести несколько адресов доставки, используйте плагины
    Multiple Shipping Address
    Shipping Multiple Addresses

    Ок, спасибо, посмотрю

    где можна увидеть похожие темы, главное чтобы такого же плана был каталог товаров

    такую тему как там можно самому с нуля сделать при наличии некоторых навыков.

    насколько он будет долго грузится если выводить около 200 едений товара на одной странице.

    зависит от мощностей хостинга и от того, как будет оптимизирован сайт.

    какая нелепая попытка съехать…
    зачем тогда советовали плагин, если не читали вопрос?

    [ удалено ]

    В данном примере уберем поле address_2 добавим поле Отчество и поменяем порядок вывода полей в аккаунте.
    form-edit-account.php

    <label for="account_second_name"><?php esc_html_e('Отчество'); ?></label>
    <input type="text" class="woocommerce-Input woocommerce-Input--text form-control" name="account_second_name" id="account_second_name" autocomplete="additional-name" value="<?php echo esc_attr(get_user_meta($user->id, 'account_second_name', true)); ?>" />

    function.php
    Сохраним поле Отчество

    add_action('woocommerce_save_account_details', 'save_additional_fields_account_func', 10, 1);
    function save_additional_fields_account_func($user_id)
    {
        $second_name  = !empty($_POST['account_second_name']) ? $_POST['account_second_name'] : '';
        update_user_meta($user_id, 'account_second_name', $second_name);
    }

    пересоберем поля:

    add_filter('woocommerce_my_account_my_address_formatted_address', 'my_account_address_formatted_addresses', 20, 3);
    function my_account_address_formatted_addresses($address, $customer_id, $address_type)
    {
        $address = array(
            'first_name'  => ucwords(get_user_meta($customer_id, $address_type . '_first_name', true)),
            'last_name'   => ucwords(get_user_meta($customer_id, $address_type . '_last_name', true)),
            'second_name' => ucwords(get_user_meta($customer_id, 'account_second_name', true)), //поле Отчество
            'phone'       => get_user_meta($customer_id, $address_type . '_phone', true),
            'address_1'   => ucwords(get_user_meta($customer_id, $address_type . '_address_1', true)),
            //'address_2'   => ucwords(get_user_meta($customer_id, $address_type . '_address_2', true)), //убираем address_2
            'city'        => get_user_meta($customer_id, $address_type . '_city', true),
            'state'       => get_user_meta($customer_id, $address_type . '_state', true),
            'postcode'    => get_user_meta($customer_id, $address_type . '_postcode', true),
            'country'     => get_user_meta($customer_id, $address_type . '_country', true)
        );
    
    return $address;
    }

    Изменим вывод:

    add_filter('woocommerce_formatted_address_replacements', function ($replacements, $args) {
        // говорим, что теперь {name} состоит из фамилии, имени и отчества
        $replacements['{name}'] = $args['last_name']. ' ' . $args['first_name']. ' ' . $args['second_name'];
        return $replacements;
    }, 10, 2);
    
    add_filter('woocommerce_localisation_address_formats', 'new_address_formats');
    function new_address_formats($formats)
    {
        //меняем порядок, добавляем метки.
        $formats['RU']  = "
            <strong>Покупатель:</strong> {name}\n
            <strong>Компания:</strong> {company}\n
            <strong>Почтовый индекс:</strong> {postcode}\n
            <strong>Страна:</strong> {country}\n
            <strong>Город:</strong> {city}\n
            <strong>Область:</strong> {state}\n
            <strong>Адрес:</strong> {address_1}\n	
        ";
        return $formats;
    }

    как-то так.

    P.S. Уважаемая администрация, просьба рассмотреть возможность автору темы устанавливать запрет просматривать и комментировать темы для определенных пользователей.

    • Ответ изменён 4 года, 8 месяцев назад пользователем Yui.

    вы на вопрос не ответили.
    где в saphali lite условная логика исходя из моих нужд?
    «ниасилили» найти, да?

    ок.
    вот я создал два поля:
    1. Radio — Тип плательщика с двумя значениями
    2. Text — ИНН

    Мне надо, чтобы при выборе плательщика «Физическое лицо» поле ИНН было скрыто, а при выборе «Юридическое лицо» — отображалось и было обязательным.

    Где это сделать в этом плагине?

    ну так может, подскажете, где она там? ткнете, так сказать, носом?

    что-то я не нашел в saphali lite условной логики.

Просмотр 15 ответов — с 1 по 15 (всего 82)