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

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

    Юрий! Спасибо! Теперь нотис ушел!

    Форум: WooCommerce
    Тема: В логах нотис

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

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

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

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

    Автор icopydoc

    (@icopydoc)

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

    Да, да, да. Модераторы 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)
    не вылезут ли глюки у других? все такие плагин установлен сейчас на нескольких сотнях магазинов и не аукнется ли «настройка» под один частный случай глюками?

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

    • Ответ изменён 7 лет, 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 (всего 132)