Задать вопрос
  • Как расшифровать htaccess новичку?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteEngine on - Включает вообще редиректор, инициализируется 1 раз за файл.
    RewriteRule ^.htaccess$ - [F] - запрещает обращение к итак скрытому файлу (все файлы начинающиеся с точки скрытые) к которому по умолчанию и так нет возможности обратиться, достаточно идиотское мероприятие.
    Возможно тот кто ее создал защищался так от инагентов.
    RewriteRule ^(.*).html$ index.php?request=$1& [L] - Все что заканчивается на .html перекинуть как запрос через пхп. ЭТо попытка сделать ЧПУ.
    К примеру если вы написали 11.html то у вас будет index.php?requesst=11
    И пхп там должен сделать вам приятно.
    Тоже странная вещь html в конце урлов сейчас никто не ставит, какой смысл. тем более чтоб потом таким способом формировать GET параметр.
    (.*) - все что перед .html обьеденяется в группу и запоминается как переменная.
    вставляется она соответственно как $1 вот тут ....request=$1..
    ^ - начало строки
    & - конец строки
    Флаг [F] это - файл
    [L] - последнее правило, забпй не поймешь, но оно дает не то что ты подумаешь если прочитаешь ман.
    Тут нужно вникнуть в глубины htaccecc ;)
    Ответ написан
    Комментировать
  • Как сделать перенаправление 301 на адрес со слешем в конце для ocStore?

    shambler81
    @shambler81 Куратор тега htaccess
    ############################################################################
    #### Убираем повторяющиеся слеши (/) в URL                              ####
    ############################################################################
    RewriteCond %{THE_REQUEST} //
    RewriteRule .* /$0 [R=301,L]
    ############################################################################
    #### Убираем слеши в конце URL для статических файлов (содержит точку)  ####
    ############################################################################
    RewriteCond %{REQUEST_URI} \..+$
       # Если файл содержит точку.
    RewriteCond %{REQUEST_FILENAME} !-d
       # И это не директория.
    RewriteCond %{REQUEST_FILENAME} -f
       # Является файлом.
    RewriteCond %{REQUEST_URI} ^(.+)/$
       # И в конце URL есть слеш.
    RewriteRule ^(.+)/$ /$1 [R=301,L]
       # Исключить слеш.
    
    ############################################################################
    #### Добавляем слеш(/), если его нет, и это не файл.                    ####
    ############################################################################
    RewriteCond %{REQUEST_URI} !(.*)/$
       # Если слеша в конце нет.
    RewriteCond %{REQUEST_FILENAME} !-f
       # Не является файлом.
    RewriteCond %{REQUEST_URI} !\..+$
       # В URL нет точки (файл).
    RewriteRule ^(.*)$ $1/ [L,R=301]
       # Добавляем слеш в конце.
    Ответ написан
    Комментировать
  • Как пофиксить кодировку csv файла?

    daruvayc0
    @daruvayc0
    Открываете Excel на вкладке "Данные" находите кнопку "Получение внешних данных", из выпадающего списка выбираете "Из текста", выбираете свой файл csv, и дальше по инструкции которая будет во всплывающем окне. После всех манипуляций сохраняете как Вам будет удобно.
    Ответ написан
    1 комментарий
  • Зачем нужны предупреждения о использовании cookie?

    spacenear
    @spacenear
    React Web Developer
    Так бесят эти уведомления. Последнее время почти на каждом крупном сайте есть
    Ответ написан
    Комментировать
  • Как реализовать ссылку с номер whatsapp на сайте?

    @AndreyStrekalov
    Поскольку api.whatsapp.com, а вместе с ним wa.me может не работать, нужно искать альтернативные способы создать ссылку на воцап. Подробнее написал в статье.

    Если в двух словах, то можно использовать диплинк или кликбар.
    Диплинк будет выглядеть так: whatsapp://send?phone=79009009090. Вместо 79009009090 нужно подставить свой номер телефона без знака +.
    Кликбар будет выглядеть как визитка, где можно будет объединить ссылки и на Ватсапп, и на Телеграм, и на другие сайты и приложения. Пример кликбара.
    Ответ написан
    Комментировать
  • Для маленькой студии или фриланса достаточно только Wordpress и woocommerce?

    nki
    @nki
    bezkart.ru готовая система лояльности
    предлагать только разработку на wordpress и woocommerce?

    Вашим потенциальным клиентам это не нужно.
    Хорошенько подумайте над позиционированием. Разработка на wordpress и woocommerce - кому это надо?
    Нужен сайт! Вот его и предлагайте.
    Вы когда вызываете такси указываете какая марка/модель машины должна за вами приехать или вам важно добраться из точки А в точку Б? Вот и с сайтами такая ситуация.

    P.S. а можно дальше пойти - заказчику и сайт-то, скорее всего не нужен, ему нужны клиенты/продажи. Вы можете ему это предложить с помощью вашего сайта? Вам надо мыслить, как маркетологи/продажники, а не как технари.
    Ответ написан
    Комментировать
  • Как реализовать Эффект магнита для кнопки?

    RAX7
    @RAX7
    Ответ написан
    Комментировать
  • Есть ли готовая похожая или такая же симуляция на js?

    SeaInside
    @SeaInside
    16 лет пилю все эти штуки
    Ровно та же самая: https://paveldogreat.github.io/WebGL-Fluid-Simulation/
    Есть несколько аналогов, гуглить запросом "webgl|canvas fluid"
    Ответ написан
    Комментировать
  • Как сдвинуть второй внутренний элемент в правый край окна с помощью flexbox? Ну или с помощью каких-либо других инструментов css?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Желательно с помощью flexbox.

    С помощью флексбокс это делать неудобно. Придется добавлять псевдо с той же шириной, как у правого блока.

    Ваши друзья в данном случае гриды (2 способа) или абсолюты (гриды лучше).
    https://jsfiddle.net/056uLsa1/
    https://jsfiddle.net/179wtyrk/

    https://codepen.io/AnnaSummer/pen/ZEjwKea (тут оба варианта)
    Ответ написан
    6 комментариев
  • Что значит оборачивание функции в скобки (function() { ... })?

    copist
    @copist
    Empower people to give
    Короткий ответ
    (function() { ... })()
    Это определение анонимной функции без параметров и непосредственный вызов её, так же, без параметров

    Длинный ответ
    Зачем оборачивать значение в круглые скобки?

    Оборачивание функции в скобки, так же как и оборачивание константы в скобки - это просто способ показать интерпретатору, что это значение внутри скобок может быть использовано как возвращаемое значение.
    var var_a = 5
    (var_a) /* или */ (5) // не является ошибкой, возвращает значение переменной или выражения
    function func_b() { }
    (func_b) /* или */ (function func_b() { }) // не является ошибкой, возвращает ссылку на функцию
    var var_c = { key: "val" }
    (var_c) /* или */ ({ key: "val" }) // не является ошибкой, возвращает объект
    var var_d = [ "one", "two" ]
    (var_d) /* или */ ([ "one", "two" ]) // не является ошибкой, возвращает массив


    Ну а раз (func_b) - это ссылка на функцию func_b, то значит её можно сразу же вызвать.
    A если (var_c) - это объект, то значит можно сразу же использовать его
    Аналогично (var_d) - это массив, то значит можно сразу же использовать его

    (func_b)() или (function func_b() { })() вызвать функцию
    (var_c).key или ({ "key": "val" }).key использовать объект
    (var_d)[0] или ([ "one", "two" ])[0] использовать массив

    Синтаксической ошибкой было бы использование функции, массива, объекта без скобок ( )
    function func_b() { }() ошибка "Unexpected token )"

    Хотя нет ошибки, по крайней мере в Google Chrome
    { key: "val" }["key"]
    ["one", "two"][0]

    Для чего вообще придумали самовызывающиеся функции?
    Для того, чтобы изолировать переменные и функции, чтобы они не попадали в глобальную область видимости.

    Сравни
    var a = "test"
    alert(a)

    по завершении этого блока переменная a болтается в глобальной области видимости

    и
    (function(){
        var a = "test"
    })()
    
    alert(a) // недоступно, потому что она была локальной переменной внутри анонимной функции


    Почему скобки ( ) пустые?
    В данном случае у функции function() { ... }нет формальных параметров, значит и вызывать можно без параметров.

    Но вообще в самовызывающуюся функцию можно передавать параметры. Это общая практика передачи ссылок на глобальные объекты:

    (function (w, d, $) {
       // некоторым нравится сокращать код путём использования коротких имён переменных
       w['fizz'] = "buzz" // вот так можно принудительно зарегистрировать
                           // глобальную переменную fizz
       $('body').css({background: 'red'}) // вот так можно работать с jQuery через привычную $
                           // даже если библиотека была загружена в режиме noСonflict
    }(window, document, jQuery))


    Некоторым не нравится длинный вариант проверки на undefined и они специально предусматривают лишний параметр, который не инициализируют

    (function (message1, message2, empty) {
        // это и есть проверка на undefined
        if (message1 === empty)
            alert('message1 is undefined')
        else
            alert('message1 = ' + message1)
    
        if (message2 === empty)
            alert('message2 is undefined')
        else
            alert('message2 = ' + message2)
    })("test") // вызвана только с одним параметром, значит второй по имени message2
    //  будет пустой, а третий empty специально ввели в качестве образца
    //  данных с типом "undefined", для служебного использования

    Зачем функция анонимная?
    Аналогично - чтобы не регистрировать её имя в глобальной области видимости, если она нужна один раз.
    Ответ написан
    7 комментариев
  • Как вывести атрибуты товаров woocommerce?

    Palych_tw
    @Palych_tw
    Типа веб-разработчик
    Что бы не получать таких ошибок, нужно делать проверку, а не пуста ли переменная $subheadingvalues. Но это так. А вообще в самом плагине все до вас написано. Атрибуты выводятся в товаре в табе "доп информация", посмотрим код этой табы. plugins/woocommerce/templates/single-product/tabs/additional-information.php
    Код там такой <?php $product->list_attributes(); ?> используется метот list_attributes(); Можно на этом остановиться и в своем шаблоне написать
    global $product;
    $product->list_attributes();

    Но получим готовую разметку в виде таблицы. Посмотрим, что делает функция list_attributes();
    public function list_attributes() {
    		wc_get_template( 'single-product/product-attributes.php', array(
    			'product'    => $this
    		) );
    	}

    Идем в папку за нужным файлом plugins/woocommerce/templates/single-product/product-attributes.php
    Помимо прочего в нем видим
    $attributes = $product->get_attributes();
    .........
    <?php foreach ( $attributes as $attribute ) :
    		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>
    			<td><?php
    				if ( $attribute['is_taxonomy'] ) {
    
    					$values = wc_get_product_terms( $product->id, $attribute['name'], array( 'fields' => 'names' ) );
    					echo apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );
    
    				} else {
    
    					// Convert pipes to commas and display values
    					$values = array_map( 'trim', explode( WC_DELIMITER, $attribute['value'] ) );
    					echo apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );
    
    				}
    			?></td>
    		</tr>
    	<?php endforeach; ?>

    Адаптируйте под свои нужды. Я думаю, должно работать)

    P.S. Не забываем поглядывать в документацию. Вот полный список того, что можно сделать с $product https://docs.woocommerce.com/wc-apidocs/class-WC_P...
    Ответ написан
    Комментировать
  • Почему не работает код jquery в setTimeout?

    SagePtr
    @SagePtr
    Еда - это святое
    Контекст функции поменялся, this тоже поменялся. Используйте стрелочные функции, чтобы контекст не менялся, или внутри обработчика присваивайте this другой переменной, а в колбэке таймаута обращайтесь к ней и забудьте про this.
    Ответ написан
    Комментировать
  • Есть вариант обойти попадание в спам писем отправленных с помощью wp_mail без создания почты?

    @Fenix957
    1) Все эти DKIM, SPF, DMARC добавлять нужно на хостинге
    На яндексе не нужно. Но учтите Много писем будете слать яндекс блокнет отправку писем если вы делаете рассылки и тд. Даже если сделаете доменную почту на самом яндексе. Примерно через 30-90 писем. Такчто лучше настроить свой сервер
    2) Ответ исходя из первого делайте свою
    3) Нет не нужно. Вы из одного почтового ящика всем будете отправлять
    4) Грубо говоря да )
    5) если используйте яндекс то да. Но учтите яндекс потом блокнет рассылки. Если письма будут шаблонные
    6) Вам нужно подвердить что вы владелец домена и все письма подписывать от имени своего сервера. Т.к всем спам порядком надоел и многие без DKIM, SPF, DMARC не доверяют и шлют в спам
    Коротка так
    Может еще кто напишет покидает ссылки
    Ответ написан
    Комментировать
  • Как сделать поиск по полям ACF?

    @weart
    У меня на одном из последних проектов вот такая комбинация работает

    function cf_search_join( $join ) {
    	global $wpdb;
    	if ( is_search() ) {
    		$join .=' LEFT JOIN '.$wpdb->postmeta. ' ON '. $wpdb->posts . '.ID = ' . $wpdb->postmeta . '.post_id ';
    	}
    	return $join;
    }
    add_filter( 'posts_join', 'cf_search_join' );
    
    
    function cf_search_where( $where ) {
    	global $pagenow, $wpdb;
    	if ( is_search() ) {
    		$where = preg_replace(
    			"/\(\s*".$wpdb->posts.".post_title\s+LIKE\s*(\'[^\']+\')\s*\)/",
    			"(".$wpdb->posts.".post_title LIKE $1) OR (".$wpdb->postmeta.".meta_value LIKE $1)", $where );
    	}
    	return $where;
    }
    add_filter( 'posts_where', 'cf_search_where' );
    
    
    function cf_search_distinct( $where ) {
    	global $wpdb;
    	if ( is_search() ) {
    		return "DISTINCT";
    	}
    	return $where;
    }
    add_filter( 'posts_distinct', 'cf_search_distinct' );
    Ответ написан
    1 комментарий
  • Почему the_date() в WordPress выводится через раз в цикле?

    dimasmagadan
    @dimasmagadan
    это стандартное поведение этой функции

    When there are multiple posts on a page published under the SAME DAY, the_date() only displays the date for the first post (that is, the first instance of the_date()). To repeat the date for posts published under the same day, you should use the Template Tag the_time() or get_the_date() (since 3.0) with a date-specific format string.

    https://codex.wordpress.org/Function_Reference/the_date

    используйте the_time() или get_the_date()
    Ответ написан
    Комментировать
  • Что имел в виду автор учебника, устанавливая свойство overflow?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Что имелось в виду?

    Это и имелось в виду. То, что написано в комментарии.

    Родитель ничего не знает о высоте дочерних флоатов.
    Если все дети флоаты, то высота родителя будет нулевой.
    Чтобы она перестала быть нулевой и стала вести себя как высота по контенту, использовали overflow.

    Если вы зададите родителю фон или даже лучше бордер и проведете эксперимент, то всё сами увидите.
    Ответ написан
    4 комментария
  • Посыпалась разметка - дробные значения у параметров высоты?

    webirus
    @webirus
    Тыжверстальщик! Наверстай мне упущенное...
    Ctrl+0 проверь, чувствую, масштаб экрана неправильный.
    Ответ написан
    Комментировать
  • Как растянуть фон svg на весь экран?

    RAX7
    @RAX7
    Ответ написан
    Комментировать