Задать вопрос
  • Нормальная ли практика делать сайт на разных языках в поддоменах?

    delphinpro
    @delphinpro
    frontend developer
    Мультиязычность (контента) обычно реализуется двумя методами
    1. Отдельные колонки под языки в каждой таблице.
    2. Отдельные таблицы одноименных моделей под каждый язык.
    Для реализации обоих способов есть уже несколько готовых пакетов.
    https://yandex.ru/search/?text=laravel+multilangua...

    А уж какую адресацию вы сделаете, особой роли не играет. Это могут быть и поддомены (en.site.ru), и поддиректории (site.ru/en).

    Я сейчас говорю о переводах именно контента. С переводом интерфейса проблем нет, тут используется встроенные методы локализации.
    Ответ написан
  • Как сделать такой поиск на wordpress?

    @CryptoYept
    Поместите следующий код в файл searchform.php вашей темы. (Внешний вид > Редактор > Форма поиска — searchform.php) Если в вашей теме нет файла searchform.php, вы можете создать его:

    <form id="searchform" method="get" action="<?php bloginfo('url'); ?>">
        <input type="text" name="s" id="s" size="15" />
        <?php wp_dropdown_categories('show_option_none=Select category'); ?>
        <input type="submit" value="Search" />
    </form>


    Затем поместите этот код в конец файла functions.php. (Внешний вид > Редактор > Функции темы — functions.php):

    add_action('pre_get_posts', 'search_by_cat');
    function search_by_cat()
    {
        global $wp_query;
        if (is_search()) {
            $cat = intval($_GET['cat']);
            $cat = ($cat > 0) ? $cat : '';
            $wp_query->query_vars['cat'] = $cat;
        }
    }
    Ответ написан
    1 комментарий
  • Как убрать автогенерацию rel="oreferrer noopener" в WordPress?

    svob
    @svob
    Фрилансер, текстовик широкого профиля
    Может, это не ВП, а плагин какой-нибудь? Который для SEO, например. И надо где-нибудь снять галочку?
    Сам ВП вроде ничего такого не добавляет, если просто ссылку через редактор блоков вставлять.
    Ответ написан
    Комментировать
  • Почему продолжает индексироваться сайт?

    vpetrov
    @vpetrov
    частный SEO-специалист
    Сколько путаницы.
    Чтобы деиндексировать сайт, правильнее всего всем страницам присвоить мета "robots" со значением noindex.
    Мгновенного результата это не даст. Впрочем, мгновенного результата это не даст при любом способе.
    В robots.txt вы прописываете запрет на сканирование - что вовсе не равнозначно запрету на индексирование. В выдаче достаточно сайтов, сниппеты с которых не выводятся: скачивать странички запрещено директивами robots.txt. А ссылки в выдаче - есть. И даже в топах. Потому что даже если там есть мета с запретом на индексирование, ПС об этом узнать не могут - поскольку сканировать/скачивать страницу им нельзя.
    Помимо мета рекомендую воспользоваться инструментарием Яндекс-Вебмастер и Search Console. Там есть инструменты, позволяющие напрямую запросить удаление из индекса ненужного контента.
    6488bafe29da1126898913.jpeg
    И имейте в виду, что все эти меры в принципе ничего не гарантируют. Это лишь пожелания, не приказы. А тот же гуглобот по деиндексированным и удаленным URL может потом ходить годами. Зачем – не знаю.
    Ответ написан
    Комментировать
  • Как извлечь базу данных из файлов сайта на Wordpress?

    svisch
    @svisch
    В скаченных через ftp файлах нет базы данных. Чтобы ее получить, вам надо из личного кабинета хостера попасть в СУБД (скорее всего у вас это MYSQL) и оттуда сделать экспорт. Потом в том месте где вы будете разворачивать снова свой сайт надо будет импортировать дамп базы и в конфигах сайта указать новые параметры подключения.
    Ответ написан
    Комментировать
  • Как закрыть модальное окно спустя 5 секунд после успешной отправки с cf7?

    Stalker_RED
    @Stalker_RED
    setTimeout(myFunc, 5000)
    5000 миллисекунд = 5 сек
    вместо myFunc - ваша функция, которая закроет модалку.
    Ответ написан
    Комментировать
  • Как работает процесс создания сайта?

    MrDecoy
    @MrDecoy Куратор тега HTML
    Верставший фронтендер
    надо лендинг пейдж
    понадобится CMS

    Достаточно сомнительно. Лендинг - это одностраничный сайт, как правило, заточенный на продажу ограниченного количества позиций из товаров\услуг (как правило 1-3 позиции). Ну либо какая-то информационная страница общего характера. Прикручивать для такого CMS - избыточно.

    А всё далее Вами описанное это всё зависит от того, к кому заказчик пришёл. На все вопрсы в любой последовательности можно отвечать да или нет. На какие то можно ответить да, а на какие то нет. И наоборот. То есть зависит от исполнителя.

    Фуллстэк фрилансер может сделать всё. Может иметь товарищей с которыми разделит проект.

    Нормальная компания\веб-студия сначала соберёт с заказчика контент, придаст ему сеоподобную форму(что для лендинга как правило малополезно) сделает прототип, нарисует дизайн с согласованным контентом, согласует с заказчиком дизайн, после чего отдаст дизайн на вёрстку и разработку бэкенда. А после зальёт на хостинг, и предложит настройку рекламы для лендинга, т.к. это самый эффективный путь продвижения на старте и для лендинга в принципе. Всё настроит и передаст заказчику исходники.
    Ответ написан
    4 комментария
  • Как добавить в запись Wordpress featured_image при помощи wp_insert_post?

    anatoly_kulikov
    @anatoly_kulikov
    Помог ответ? Отметь решением!
    В Wordpress картинки - это тоже посты, поэтому если вам нужно к записи прикрепить какую-то обложку, то для этого вам нужно:
    1. либо id уже добавленной картинки вставить в мета поле записи
    2. либо сначала создать пост, получить его id, потом создать пост-изображение, получить его id, и потом вставить в мету первого


    Хотя, можно сделать так, чтобы картинка выводилась нестандартно - тогда ровно так же придумываем мету, туда указываем ссылку на картинку, а далее если у постов такая мера есть и она не пустая, то выводить изображение из ссылки по мете.
    Ответ написан
    1 комментарий
  • Как обеспечить идемпотентность запросов к API?

    neuotq
    @neuotq
    Прокрастинация
    С кукисами и прочим оставьте это на стандарты что уже вам даёт WP(и/или плагины что вы там используете).
    После нажатия купить, у вас создаётся запись о покупке в БД, со статусом не оплачен. У покупки во всех системах для создания инет магазинов и тп уникальный айди, вот на основе его и можно генерировать уникальный (допустим
    с помощью crypt) ключ идемпотентности.
    После успешной оплаты в БД статус меняется на оплчен и этот заказ и его айди больше никогда не используется. Даже при повторной покупке это будет уже клон этой, но с новым айди.
    Таким образом и себя защитите и в целом простое и относительно надёжное решение.
    Могут быть нюансы только когда оплата прошла, а ваш сервис это узнать через обратный webhook не смогла(допустим был лаг и тп) и запись в БД не стала - оплачен. Но обычно платёжные шлюзы даёт проверять статусы оплаты и по запросу, поэтому если не приходит ответ там в течении какого-то времени, можно запрашивать в ручную. Ну и затем в любом случае устаревает запрос на оплату(почти во всех платёжках есть тайм аут на то, в какое время можно оплатить уже после создания инвойса на их стороне), так что и тут в целом все норм.
    Ответ написан
    4 комментария
  • Как сделать, чтобы сайт приближался и не ломался?

    @vladislav198712
    Для того, чтобы сайт не ломался при масштабировании, можно использовать относительные единицы измерения вместо абсолютных, таких как пиксели или проценты. Например, можно использовать единицы измерения "em" или "rem", которые основаны на размере шрифта, а не на размере экрана. Это позволит элементам сайта масштабироваться пропорционально друг к другу и сохранять свою расстановку.

    Также можно использовать медиа-запросы для определения оптимальных размеров элементов при разных размерах экрана. Например, можно создать медиа-запросы для разных диапазонов ширины экрана и задать оптимальные размеры для элементов при каждом диапазоне. Например:

    @media (max-width: 768px) {
      /* Задать размеры для элементов при ширине экрана до 768px */
    }
    
    @media (min-width: 769px) and (max-width: 1024px) {
      /* Задать размеры для элементов при ширине экрана от 769px до 1024px */
    }
    
    @media (min-width: 1025px) {
      /* Задать размеры для элементов при ширине экрана от 1025px */
    }


    Кроме того, можно использовать векторную графику и шрифты, которые могут масштабироваться без потери качества.

    Чтобы сделать аккуратное увеличение сайта, как на Хабре, можно использовать CSS-свойство "transform: scale()". Это свойство позволяет масштабировать элементы сайта без изменения их размера на странице. Например, можно задать следующие стили для body:

    body {
      transition: transform .3s ease-in-out;
    }
    
    body.zoom-in {
      transform: scale(1.2);
    }


    Эти стили позволят масштабировать сайт с помощью класса "zoom-in". Когда этот класс добавляется к body, сайт увеличивается на 20% без изменения расстановки элементов.
    Ответ написан
    Комментировать
  • Как убрать уведомление темы в wordpress о переходе на платную версию?

    r3n0
    @r3n0
    // _ AppSec // Bug Bounty / Legal Hacking
    Привет.

    Попробуй вот так:
    add_action( 'wp_loaded', function(){
    	remove_action( 'admin_notices', 'enjoyblog_notice' );
    } );

    Можно добавить в functions.php для быстрого теста.
    Ответ написан
    2 комментария
  • Какой есть плагин для уведомления об ошибках в тексте?

    r3n0
    @r3n0
    // _ AppSec // Bug Bounty / Legal Hacking
    Привет.

    Есть вот такой плагин - Webmaster Spelling Notifications - он хоть и заброшен автором, но устарел не очень сильно, да и сам по себе плагин минимальный. Из консоли сайта установить его можно.

    Mistape - хоть плагин и "закрыли" из-за обнаруженной (но не раскрытой) уязвимости, скачать файлы всё равно можно. Только не нужно.

    Error Notification - не обновлялся 10 лет, так что тут тоже всё ясно.

    Ну или вот так попробуйте.
    Ответ написан
    2 комментария
  • Как лучше хранить данные в БД WordPress и выполнять экспорт/импорт в файл?

    wfantastic
    @wfantastic
    увлечен wordpress
    Для вашего случая, я бы рекомендовал использовать свою таблицу базы данных, созданную через $wpdb. Это позволит вам более гибко управлять структурой таблицы и производительностью.

    Как хранить данные

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

    Как делать экспорт/импорт в файл:

    Для экспорта и импорта данных в файл вы можете использовать стандартные функции экспорта и импорта WordPress, такие как export_wp() и import_wp(). Они позволяют экспортировать и импортировать содержимое WordPress, включая пользовательские типы записей и метаданные. Если вы используете свою таблицу, вы можете создать свои собственные функции экспорта и импорта, которые будут работать с вашей таблицей.

    Что касается того, как делать экспорт/импорт в файл раз в день, вы можете использовать планировщик задач WordPress, чтобы запускать скрипты экспорта и импорта в определенное время. Например, вы можете использовать функцию wp_schedule_event() для установки периодического запуска задач.

    Контроль размера таблицы:

    Чтобы контролировать размер таблицы, вы можете создать функцию удаления старых записей, которая будет удалять записи, которые старше заданного периода. Эту функцию можно запускать периодически через планировщик задач. Например, вы можете использовать функцию $wpdb->query() для удаления записей старше года.
    Ответ написан
    1 комментарий
  • Как задать ссылку на другую страницу в wordpress?

    d9d9_Sun
    @d9d9_Sun
    делаю сайты.
    php файл нужно создать как template страницы, затем создать страницу в админке и назначить ей этот шаблон. И сделать обычную ссылку на эту страницу.
    Ответ написан
    Комментировать
  • Как обновить поля с carbon fields?

    AndiMandi
    @AndiMandi Автор вопроса
    Вроде юн, а уже на заводе :)
    Решил проблему совместно с Артем Золин
    1) Найдена ошибка в файле-обработчике:
    $number = iseet($_POST['_number']) ? $_POST['_number'] : '';
    , вместо iseet - isset.
    2) В HTML-форме,
    <input type="text" name="post" id="post" placeholder="Должность" value="<?php echo get_the_author_meta( '_post' ,$user_id);?>">
    . Обратите внимание на имя и идентификатор - они должны быть как имя кастомного мета-поля, то есть вот так:
    <input type="text" name="_post" id="_post" placeholder="Должность" value="<?php echo get_the_author_meta( '_post' ,$user_id);?>">
    И так во всех кастомных полях.
    3) с JS все в порядке, там ничего исправлять не нужно.
    4) чтобы обновить мета-поле Carbon Field, можно прописать вот так: update_user_meta($user_id, '_post', $post );. И так со всеми кастомными полями.
    Надеюсь в дальнейшем вам очень поможет :)
    Ответ написан
    Комментировать
  • Сильно не досчитывает кол-во просмотров у новостей функция, в чем может быть проблема и как ее решить?

    Stalker_RED
    @Stalker_RED
    Да, возможно get_post_meta() кешируется, лень смотреть код кеширующего плагина.

    Еще один косяк:
    $count++;
    update_post_meta()


    Представим, что был 1 просмотр, и потом еще 10 просмотров произошло одновременно. Десять раз был получен счетчик из базы (единица), увеличен (до двойки), и записан обратно, но в итоге получим двойку в БД, потому что на момент записи в переменной $count была двойка.

    Фиксится и то и другое элементарно, вместо "прочитать-увеличить-записать" делайте просто update с инкрементом даже не запрашивая текущее значение счетчика из базы
    UPDATE `myTable` SET `post_views`=`post_views`+1 WHERE `post_id`=42;
    Ответ написан
    2 комментария
  • Как создатется сайт безопасных сделок?

    Sanes
    @Sanes
    Готовых CMS нет и быть не может. Это сложная и дорогая бизнес-схема и разрабатывается индивидуально.
    Точнее CMS есть, но они вряд ли вам подойдут без существенной доработки. Например CS Cart Multivendor.
    Ответ написан
    2 комментария
  • Откуда кавычка в начале названия страницы WP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Скорее всего криво закрытый тег. Внимательно просмотрите код разметки.
    Ответ написан
    Комментировать
  • Как использовать один header на всем проекте?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    По сути на вопрос, который Вы задали, сами и ответили. Решение данной задачи заключается в правильной выборке. А вот, чтобы помочь Вам нет никаких данных. В чем проблема-то? Для Вас проблема написать более сложный тернарник (можно использовать обычный if else с определением переменной, которая будет нести в себе определенный класс)? Или Вы не знаете как проверить что-либо кроме главной? И вообще ...

    а как сделать для определенной страницы свои стили для header


    что за страницы? можно ведь и просто по id присваивать стили или по шаблону (is_page_template()) или is_single(), или is_singular() ( is_single() + is_page() + is_attachment() ).....

    есть масса возможностей для проверки, но Вы не поделились в этом направлении никакой инфой

    вот Вам пример тернарника из черновиков по извращаться

    global $post;
    if(!is_home()&&!is_404()&&!is_search()&&isset($post->ID)){$VAB_SEOA=get_post_meta($post->ID,'VAB_SEO',true);}
    
    $SEO_title=isset($VAB_SEOA['SEO_title'])?$VAB_SEOA['SEO_title']:(get_the_title()&&!is_home()&&!is_front_page()&&!is_archive()&&!is_search()?get_the_title()/*.' | '.get_bloginfo('name')*/:(is_home()||is_front_page()?get_bloginfo('name').' | '.get_bloginfo('description'):(is_404()?'404 - '.esc_html__('страница не существует','VAB'):(is_search()?esc_html__('Результаты поиска','VAB').': '.get_search_query():(is_archive()?(is_day()?esc_html__('Архив по дням','VAB').': '.get_the_date():(is_month()?esc_html__('Архив по месяцам','VAB').': '.get_the_date('F Y'):(is_year()?esc_html__('Архив по годам','VAB').': '.get_the_date('Y'):(is_category()?esc_html__('Категория архива','VAB').': '.single_cat_title('',false):(is_tag()?esc_html__('Архив по меткам','VAB').': '.single_tag_title('',false):(has_post_format()?esc_html__('Архив по формату','VAB').': '.single_tag_title('',false).'/'.get_post_format():(is_author()?esc_html__('Архив Автора','VAB').': '.get_the_author_meta('display_name',get_user_by('id',get_query_var('author'))->ID):esc_html__('Архив блога','VAB')))))))):get_bloginfo('name').' | '.get_bloginfo('description'))))));



    гуглите нужную выборку
    например проверить какой шаблон подключен wordpress (получите is_page_template() или get_page_template_slug( get_the_ID() ... )

    и так далее пока не получите, что нужно)))
    Ответ написан
    Комментировать