Задать вопрос
  • Как сделать ссылку на Viber?

    Middle_Pudge
    @Middle_Pudge
    Дело в том что десктопное и мобильное приложение Viber открывается по разным ссылкам, что создает определенные сложности при добавлении такой ссылки на сайт. Поэтому потратьте 2 минуты чтобы прочитать и понять текст ниже) Для мобильных устройств используется такой подход формирования ссылки:
    <a href="viber://add?number=380950000000">Написать в Viber</a>

    Для ПК – такой:
    <a title="Должен быть установлен Viber для ПК" href="viber://chat?number=+380950000000">Написать в Viber</a>


    Для того, чтобы определить устройство при помощи PHP, в самом простейшем случае можно воспользоваться простейшей функцией, которая определяет USER_AGENT устройства, а затем, в зависимости от того, опередила ли функция устройство как мобильное или нет, показывать ту или иную ссылку.
    <?php function check_mobile_device() { 
        $mobile_agent_array = array('ipad', 'iphone', 'android', 'pocket', 'palm', 'windows ce', 'windowsce', 'cellphone', 'opera mobi', 'ipod', 'small', 'sharp', 'sonyericsson', 'symbian', 'opera mini', 'nokia', 'htc_', 'samsung', 'motorola', 'smartphone', 'blackberry', 'playstation portable', 'tablet browser');
        $agent = strtolower($_SERVER['HTTP_USER_AGENT']);    
        foreach ($mobile_agent_array as $value) {    
            if (strpos($agent, $value) !== false) return true;   
        };     
        return false; 
    };?>

    Расположить функцию, можно, например в самом начале страницы, перед 'doctype' или вынести в отдельный файл и там же подключить его.

    После этого, в месте где будет выводиться ссылка на Viber используйте такую проверку:
    <? if(check_mobile_device()) :?>
    	<a title="Viber" href="viber://add?number=79851198793"></a>              
    <? else : ?>
    	<a title="Viber" href="viber://chat?number=+79851198793"></a>
    <? endif; ?>

    Теперь, если человек зашел с ПК, то ему покажется ссылка для десктопного приложения, а если с мобильного устройства, то ссылка для смартфона или планшета.
    Ответ написан
    Комментировать
  • Подключение xml с помощью js к html?

    @alexalexes
    1. Нужно убедиться, что файлы script.js и data.xml находятся в том же каталоге, что и index.html.
    2. Нужен веб-сервер, так как ajax-запрос вы не сделаете на файл диска data.xml.
    На сервере должен быть определен домен (путь будет локальный), и в каталоге, с которым ассоциирован домен, должны находиться вышеупомянутые файлы.
    Обращаться к index.html необходимо через домен.
    Ответ написан
    Комментировать
  • Платить или не платить за чужую картинку на своём сайте?

    @RusGar
    Legal Tech и управление разработкой продуктов
    1 шаг - удалить картинку ( ну это понятно);
    2 шаг - вступить в переговоры с этой специализирующейся компании (сейчас их называют патентными троллями), запросить у них документы, подтверждающие их право действовать от лица правообладателя. Выйти на правообладателя и пообщаться с ним, попытавшись разьяснить, каой урон его репутации может нанести его сотрудничество с патентными троллями;
    3 шаг - договориться с ними о значительном снижении откупного, причем с полным юридическим оформлением того, что претензии будут сняты полностью.
    4 Если вы не сможете выйти на удовлетворяющие вас договоренности, то готовится к суду. Он обойдется гораздо больше с хорошим юристом, чем 50 т.руб. Юрист сможет добиться уменьшение штрафа в полтора, два раза. Но расходы на юриста вы не предъявите той стороне, потому что вы будете проигравшей стороной вероятнее всего.

    PS. Рекомендую статью в Российской газете "Верховный суд: За появление на сайте чужого фото надо платить"
    Ответ написан
    Комментировать
  • Как вывести название (label) атрибута woocommerce?

    Olivoin
    @Olivoin Автор вопроса
    Вот так
    global $product;
        $attributes = $product->get_attributes();
      
        if ( ! $attributes ) {
            return;
        }
      
        $out = '<ul class="custom-attributes">';
      
        foreach ( $attributes as $attribute ) {
      
      
            // skip variations
            if ( $attribute->get_variation() ) {
            continue;
            }
            $name = $attribute->get_name();
            if ( $attribute->is_taxonomy() ) {
      
                $terms = wp_get_post_terms( $product->get_id(), $name, 'all' );
                // get the taxonomy
                $tax = $terms[0]->taxonomy;
                // get the tax object
                $tax_object = get_taxonomy($tax);
                // get tax label
                if ( isset ( $tax_object->labels->singular_name ) ) {
                    $tax_label = $tax_object->labels->singular_name;
                } elseif ( isset( $tax_object->label ) ) {
                    $tax_label = $tax_object->label;
                    // Trim label prefix since WC 3.0
                    if ( 0 === strpos( $tax_label, 'Product ' ) ) {
                       $tax_label = substr( $tax_label, 8 );
                    }                
                }
      
      
                $out .= '<li class="' . esc_attr( $name ) . '">';
                $out .= '<span class="attribute-label">' . esc_html( $tax_label ) . ': </span> ';
                $out .= '<span class="attribute-value">';
                $tax_terms = array();
                foreach ( $terms as $term ) {
                    $single_term = esc_html( $term->name );
                    // Insert extra code here if you want to show terms as links.
                    array_push( $tax_terms, $single_term );
                }
                $out .= implode(', ', $tax_terms);
                $out .= '</span></li>';
     
            } else {
                $value_string = implode( ', ', $attribute->get_options() );
                $out .= '<li class="' . sanitize_title($name) . ' ' . sanitize_title( $value_string ) . '">';
                $out .= '<span class="attribute-label">' . $name . ': </span> ';
                $out .= '<span class="attribute-value">' . esc_html( $value_string ) . '</span></li>';
            }
        }
      
        $out .= '</ul>';
      
        echo $out;
    Ответ написан
    1 комментарий
  • Как решить проблему с "в вашей конфигурации PHP отсутствует расширение MySQL"?

    serii81
    @serii81
    Я люблю phр...
    Вот ответ
    sudo apt-get install php7.0-mysqli

    Я тоже столкнулся с данной проблемой
    Ответ написан
    4 комментария
  • Есть удобный календарь для wordpress?

    Smartichello
    @Smartichello Автор вопроса
    IT
    Неужели нет решения?
    Ответ написан
    Комментировать
  • Неправильное масштабирование элементов при размере окна меньше 384px, что делать?

    i__dmitry
    @i__dmitry
    Weaving a web
    Зачем ты выкатил сюда простыню кода? Никто не будет вчитываться или, тем более, тратить время, вставляя её в редактор. Проявляй элементарное уважение к сообществу, если хочешь помощи.
    По существу вопроса: проблема, скорее всего, не в "масштабировании", а в том, что какой-то блок на странице вылезает за пределы контейнера, увеличивая общую ширину страницы. Проверяй через девтулс каждый контейнер, чтобы найти проблему.

    P.S. Есть лайфхак для такой ситуации.
    Применяешь следующие стили:
    body * {
        box-shadow: 0 0 5px 1px #FF0000;
    }

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

    ddv88
    @ddv88
    Binance Futures
    [команда создания ссылки] [ключ] [куда попадем по ссылке] [откуда пойдем по ссылке]
    Ответ написан
    4 комментария
  • Как написать этот на pug/jade?

    werty1001
    @werty1001
    undefined
    label.pure-checkbox(for="cb")
    	input#cb(type="checkbox")
    	| I've read the terms and conditions
    Ответ написан
    1 комментарий
  • Как использовать pug внутри компонента vue?

    yarkov
    @yarkov Куратор тега Vue.js
    Помог ответ? Отметь решением.
    https://pugjs.org/api/reference.html
    Подключить pug и вот так должно сработать:
    import pug from 'pug';
    
    //...
    template: pug.render(`span {{ tr(lang).title }} `)


    Но я бы не костылил ))
    Ответ написан
    6 комментариев
  • Как сделать липкий при скролле блок, как в вк?

    DanArst
    @DanArst Куратор тега CSS
    Гриффиндор в моде при любой погоде!
    Желательно стандартными свойствами css (если такое возможно)

    Только с CSS такое не получится, в любом случае понадобится js
    Вот сделал с использованием jquery-плагина sticky-sidebar
    Ответ написан
    2 комментария
  • Как в проводнике windows синхронизировать дерево папок?

    HemulGM
    @HemulGM Куратор тега Windows
    Delphi Developer, сис. админ
    А в настройки не пробовали заходить?
    5e685a5eed798921765308.png
    Ответ написан
    1 комментарий
  • Почему не срабатывает position: sticky?

    SkiperX
    @SkiperX Куратор тега CSS
    overfloy: hidden;
    если есть в родителях, то не работает
    Ответ написан
    Комментировать
  • Как из дробного числа (13.123456) убрать все, что перед точкой вместе с точкой?

    kirbi1996
    @kirbi1996
    Переведи в строку разбей по точке и возьми вторую часть, затем переведи в число. Это самое банальное что пришло в голову
    Ответ написан
    Комментировать
  • Как с гарантией определить, что сайт открыт на смартфоне или планшете?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Через touch-детект.

    И можно добавить ещё проверку ориентации экрана: тут и navigator.userAgent.

    Или так:
    if(window.matchMedia("only screen and (max-width: 760px)").matches) {
    //mobile device
    } else {
    //not mobile device
    }

    Или через проверку наличия гироскопа:
    var gyroPresent = false;
    window.addEventListener("devicemotion", function(event){
        if(event.rotationRate.alpha || event.rotationRate.beta || event.rotationRate.gamma)
            gyroPresent = true;
    });
    Ответ написан
    Комментировать
  • Custom Taxonomy Capabilities. Как настроить правильно?

    san_jorich
    @san_jorich Автор вопроса
    Творческий кодер
    Твою-ж папу...Тостер!
    Бывает и такое: Спустя месяц с гаком вернулся к вопросу в другом проекте. Решил. В ходе поиска решения наткнулся на свой же вопрос по этой же теме. Сам задал - сам ответил. Нормально, че)))
    Если кому пригодится - некогда объяснять, просто берите готовое рабочее решение. Решение выкладываю по приведенному примеру:
    function add_se_roles() {
    
      $es_admin = add_role('es_admin','Администратор Системы Мероприятий',array( 'read'=>true,'level_7'=>true));
      if ( null !== $es_admin ) {
        $es_administrator = get_role('es_admin'); // Для CPT
        $es_administrator->add_cap('edit_es_event_content'); 
        $es_administrator->add_cap('edit_es_event_contents');
        $es_administrator->add_cap('read_es_event_content');
        $es_administrator->add_cap('read_private_es_event_content');
        $es_administrator->add_cap('delete_es_event_content');
        $es_administrator->add_cap('delete_es_event_contents');
        $es_administrator->add_cap('edit_published_es_event_contents');
        $es_administrator->add_cap('delete_published_es_event_contents');
        $es_administrator->add_cap('edit_other_es_event_content');
    
        $es_administrator->add_cap('manage_es_event_type'); // <-Права таксономии вопроса
        $es_administrator->add_cap('edit_es_event_type');
        $es_administrator->add_cap('delete_es_event_type');
        $es_administrator->add_cap('assign_es_event_type');
    
        $es_administrator->add_cap('manage_es_event_operation');
        $es_administrator->add_cap('edit_es_event_operation');
        $es_administrator->add_cap('delete_es_event_operation');
        $es_administrator->add_cap('assign_es_event_operation');
    
        $es_administrator->add_cap('manage_es_event_location');
        $es_administrator->add_cap('edit_es_event_location');
        $es_administrator->add_cap('delete_es_event_location');
        $es_administrator->add_cap('assign_es_event_location');
    
        $es_administrator->add_cap('manage_es_event_team');
        $es_administrator->add_cap('edit_es_event_team');
        $es_administrator->add_cap('delete_es_event_team');
        $es_administrator->add_cap('assign_es_event_team');
        $es_administrator->add_cap('manage_event_service');
      }  
    
    }
    // Легче создать относительно пустую, со стандартными возможностями роль и по итогам создания напичкать ее всем, чем нужно. 
    // Все, что нужно прописывается в функциях создания таксономий и произвольного типа записи.
    Ответ написан
    Комментировать
  • Где в open server можно посмотреть логи веб-сервера?

    @unreal_serg
    Понимаю, что давно задавали, но пусть ответ будет для истории.
    Все логи хранятся в OSPanel/userdata/logs
    Там логи по всем модулям - php, apache и т.д.
    Ответ написан
    2 комментария
  • Jquery или React?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Грубо говоря, в том же, в чём отличие jQuery от чистого JavaScript'а - в дополнительном слое абстракции, облегчающем процесс разработки.
    Ответ написан
    Комментировать
  • Woocommerce: Как массово перевести товары в черновик?

    А зачем?
    Выбираете товары -> действие "Изменить" -> кнопка "Применить -> Устанавливаете новый статус (черновик) -> и OK.
    Ответ написан
    2 комментария