• Почему не записываются данные в файл?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Как все новички, вы оперируете понятием "может быть".
    "может быть сервер не принимает". "по крайне мере должно отправлять". "насчет РНР не уверен"
    Так делать никогда не надо.
    У вас есть все возможности узнать то, что происходит на самом деле. Факты.
    Вот фактами-то и надо всегда оперировать.
    Какая вам разница, "может ли быть такое, что backend не принимает"? Может. И чем вам это знание поможет?
    Вам не нужно знать абстрактно, вам нужно знать, принял ли ваш конкретный сервер ваши конкретные данные.
    А узнать это очень просто. Если "backend не принимает", то но выдаст ошибку. Все что вам нужно - это посмотреть, что он возвращает. Глазами.
    Плюс на всякий случай проверить, настроен ли backend на вывод ошибок.

    При работе с аякс запросами надо всегда держать открытой вкладку Сеть в инструментах разработчика в браузере.
    И смотреть, во-первых, что ваш фронт отправляет, а во-вторых - что сервер отвечает. Там вообще может быть 404. Поскольку никакого конкретного адреса вы на сервере не указали.
    Плюс если ответ сервера есть, то надо смотреть его содержимое на предмет ошибок.
    Ответ написан
    Комментировать
  • Как реализовать платные публикации постов на wordpress?

    @Refguser
    Решения для бизнеса: от создания ИМ до...
    Нужно просто чтобы человек написал статью, сохранил её на сайте (она конечно попала на рассмотрение админа), и автору пришло письмо с уведомлением об оплате или при публикации была какая то кнопка с оплатой.

    При такой логике всё есть из коробки - по дефолту посты от авторов ставятся на премодерацию.
    На сайте размещаешь кнопку/виджет от агрегатора типа я.кассы или комплексного решения в виде лейки и получаешь уведомление об оплате.
    Ответ написан
    Комментировать
  • Почему в WP не работает preg_replace или str_replace?

    IvanU7n
    @IvanU7n
    nothing interesting here
    подозреваю, что the_sub_field само делает echo и ничего не возвращает
    найдите функцию, которая возвращает значение, а не выводит его
    Ответ написан
    1 комментарий
  • Wordpress меняется постоянная ссылка?

    YBB
    @YBB
    Потому что слеши внутри слага недопустимы. Слеши в url разделяют части пути (как и в файловой системе), а слаг это одна неделимая часть.
    Ответ написан
    Комментировать
  • Как получить количество колонок галереи?

    i229194964
    @i229194964
    Веб разработчик
    вот пример
    function custom_gallery_function($output, $attr) {
        // Получаем количество колонок из аргументов галереи
        $columns = isset($attr['columns']) ? intval($attr['columns']) : 3;
    
        // Ваш код для вывода галереи с заданным количеством колонок
        // ...
    
        return $output;
    }
    add_filter('post_gallery', 'custom_gallery_function', 10, 2);
    Ответ написан
    Комментировать
  • Как выполнить поиск только по заголовкам постов?

    @petruncho Автор вопроса
    Решение:
    Спасибо Dymok за наводку)

    1. Добавляем в functions.php темы
    // find_posts_by_title_part — название функции, можно заменить на любое свое название
    // title_part — название нового параметра для WP_Query()
    function find_posts_by_title_part( $where, &$wp_query ){
        global $wpdb;
    
        if ( $title_part = $wp_query->get( 'title_part' ) ) {
            $param = esc_sql( $wpdb->esc_like( $title_part ) );
            $sql .= " AND " . $wpdb->posts . ".post_title LIKE '%" . $param . "%'";
        }
    
        return $sql;
    }
    add_filter( 'posts_where', 'find_posts_by_title_part', 10, 2 );


    2. Пишем запрос к базе данных через WP_Query()
    $args = array(
      'posts_per_page' => -1,
      'post_type'      => array('projects', 'jobs', 'services'),
      'order'          => 'ASC',
      'title_part'     => 'инже',
    );
    
    $query = new WP_Query( $args );
    Ответ написан
    Комментировать
  • Нормальная ли практика делать сайт на разных языках в поддоменах?

    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 комментарий