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

Просмотр 15 ответов — с 31 по 45 (всего 131)
  • Форум: WooCommerce
    Тема: В логах нотис

    Да) Это мой плагин. Потому и парюсь.
    Я сначала думал заменить на
    $result_yml_name = get_the_title($postID);
    и проблема как бы решена т.к в 90% случаев значения будут совпадать. НО! Если у юзера какие-то фильтры для названий товаров от других плагинов установлены, нужные ему. Тогда это не поможет.
    Т.е нужно использовать именно $product;

    Можно, конечно, и так оставить ибо работает же. Но все же речь о PRO версии. Да и вообще. Не гоже нотисы в плагине оставлять. Должно все как часы работать.

    Мне не совсем понятна сама природа нотиса. Линк, который в логах вукомерц дает — ведет на пустой раздел справки.

    И главное. Работает же.

    Затем, что мне это не для виджета нужно вовсе.
    Это для моего плагина, который формирует фид экспорта на другие сайты по определенным условиям. Условий очень много.
    Собственно вопрос прежний. Что в приведенном мною примере, в запросе не так? Почему попадают только простые товары, а вариативные пропускаются?

    Да, да, да. Модераторы plugins@wordpress.org во всем разобрались. Спасибо Вам всем за помощь!

    Yui, спасибо за совет — написал. Буду ждать, что ответят.

    Может быть, правильнее и проще будет идти иным путем, вместо собирания массива ID Вариаций?

    Мне клиентом вообще предоставлен экселевский файл. В нем id вариаций. Исходные данные мне не изменить. Имею что имею. Там более 700 айдишников. Товаров на сайте порядка 50 000.
    Т.е мне надо примерно в 500 (т.к есть некоторые вариации входят в один и тотже товар) товаров внести правки. Выделить из 50 000 товаров 500 нужных и прописать этим товарам необходимый атрибут через $product->set_attributes()

    В итоге сам написал решение. Возможно, вы посоветуете, как улучшить этот код:
    Результат функции возвращает ID вариации по-умолчанию.

    function default_var_id($product) {	
     foreach($product->get_available_variations() as $pav) {
    	$def = true; $offer_id = ''; $cur_var_id = ''; 
    	foreach($product->get_variation_default_attributes() as $defkey => $defval) {
    		if ($pav['attributes']['attribute_'.$defkey] != $defval) {
    			$def = false; continue;        
    		}
    		$cur_var_id = $pav["variation_id"];
    	}
    	if ($def) {		  	
    		$offer_id = $cur_var_id; 
    		return $offer_id;
    	}
     }
     return $offer_id;
    }

    1. Нет в форму не передается. А как это сделать? через какой хук? И нужно ли?
    2. Соответственно тоже нет.

    В моем случае кастомный нонсе попадает только на страницу с редактированием поста.
    Но моя задача чтобы функция отрабатывала и при обычном сохранении и при быстром.

    Да. Да срабатывает. Я уже выше написал свой косяк. У меня вопрос про noncename. Как мне проверяться то? Или не нужно?

    Я чутка при логировании перемудрил.
    В моем случае проблема вот в чем была

    function yfym_save_post_product_function ($post_id, $post, $update) {
    if (!wp_verify_nonce($_POST['noncename'], plugin_basename(__FILE__))) {return;}
    А ЛОГИРОВАЛ ЛИШЬ ТУТ.
    
    }

    Но у меня вопрос. Получается что nonce вообще не юзать что ли в этом хуке?

    Впшных проверок достаточно для безопасности?

    Кастомный шаблон не катит по причине того, что это будет плагин и магазины с совершенно разными шаблонами.

    Полностью у меня конструкция такая:

    if ((validate_file($filename) === 0)&&(file_exists($filename))) {
    	// файл есть
    	if (!$handle = fopen($filename, $cc)) {
    		error_log('Не могу открыть файл. line 1592', 0);
    		yfym_errors_log('Не могу открыть файл. line 1593');
    	}
    	if (fwrite($handle, $result_yml) === FALSE) {
    		error_log('Не могу произвести запись в файл. line 1596', 0);
    		yfym_errors_log('Не могу произвести запись в файл. line 1597');
    	} else {
    		error_log('Ура! Записали.. line 1599', 0);
    		return true;
    	}
    	fclose($handle);		
    } else { // файла еще нет
    .... код отвечающий за первое создание файла
    } 

    * $cc = ‘w+’ или ‘a’; в зависимости от ситуации

    Я вот думаю, если я выкину нафиг часть условия (validate_file($filename) === 0)
    не вылезут ли глюки у других? все такие плагин установлен сейчас на нескольких сотнях магазинов и не аукнется ли «настройка» под один частный случай глюками?

    Как лучше поступить в моей ситуации?

    • Ответ изменён 5 лет, 10 месяцев назад пользователем icopydoc.

    на чем именно false — validate_file или file_exists?

    на validate_file

    Судя по всему да — либо windows хостинг, либо вообще что-то свое.
    Т.е это результат работы wp_upload_bits (то что лежит в $upload[‘file’]) после создания файла.
    Данные по хостингу уточняю у клиента.

    Проверка DNS-записей домена — утилита dig дала результат

    95.165.128.148
    95-165-128-148.static.spd-mgts.ru
    Т.е. там явно хостинг какой-то необычный. По крайней мере по урл я хостинг не смог определить.

    Вопрос в другом — что блин с этим делать?

    Флектор, спасибо. Сделал вот так. Все пашет.

    # BEGIN robots.txt to both addresses
    <ifModule mod_expires.c>
    RewriteCond %{HTTPS} off
    RewriteCond %{REQUEST_URI} !robots.txt
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    </IfModule>
    # END robots.txt to both addresses
    
    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    
    # END WordPress
    
    <ifModule mod_expires.c>
    
    ExpiresActive On
    
    # Cache Images
    ExpiresByType image/x-icon "access plus 2592000 seconds"
    ExpiresByType image/jpeg "access plus 2592000 seconds"
    ExpiresByType image/png "access plus 2592000 seconds"
    ExpiresByType image/gif "access plus 2592000 seconds"
    
    # Cache other content types (Flash, CSS, JS, HTML, XML)
    ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
    ExpiresByType text/css "access plus 604800 seconds"
    ExpiresByType text/javascript "access plus 2592000 seconds"
    ExpiresByType application/javascript "access plus 2592000 seconds"
    ExpiresByType application/x-javascript "access plus 2592000 seconds"
    ExpiresByType text/html "access plus 600 seconds"
    ExpiresByType application/xhtml+xml "access plus 600 seconds"
    
    </ifModule>

    На Ваш взгляд ничего лишнего или неправильного сейчас у меня в коде нет? Или может быть вы бы что-то еще добавили…

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

Просмотр 15 ответов — с 31 по 45 (всего 131)