Ответы пользователя по тегу WordPress
  • Как публикавать в WordPress по HTML-шалону?

    kumaxim
    @kumaxim
    Web-программист
    Допустим тебе нужно добавить два абзаца и галерею.
    Первое что приходит на ум - сделай под галлерею и второй абзац доп.поля(они же custom post fields) и применяй к ним какое тебе нужно форматирование в шаблоне. Сами доп.поля заворачивай в метабоксы с textarea и будет Вам счастье.

    Вариант чуть посложнее - использовать Post Formats. Например, текст из тела поста разрезается по разделителю "новая строка",(имею ввиду expload('\n', $post) ) а потом обе части выводятся в любом месте.

    Мне лично кажется первое проще. Если пойдешь по этому пути, для облегчения создания metabox-ов можешь попробовать использовать metabox.io
    Ответ написан
    Комментировать
  • Разные стили в wordpress для разных страниц?

    kumaxim
    @kumaxim
    Web-программист
    Для начала подключайте свои стили через хук wp_enqueue_script в function.php
    Используя условные теги типа is_singular() и т.д. можно частично решить Вашу задачу.
    Ответ написан
    Комментировать
  • Как удалить кучу известных ссылок в wordpress?

    kumaxim
    @kumaxim
    Web-программист
    Лично я считаю, что здесь в корне неверный подход.

    Первое - лучше забыть в function.php. Сделайте простенький плагин. В плагине регистрируйте задачу на wp_schedule_event.

    Далее, через WP_Query получайте все посты, которые соответствуют Вашим критериям(тип, категория, мета-данные и т.д.). Одно условие - не более 25 штук за раз(число взято с потолка). Из этих 25 штук вырезайте ссылки по Вашим критериями. Лично я бы резал используя DomDocument, но через регулярки тоже можно.

    На данный момент мы получаем, что за один проход мы обрабатываем 25 записей в Вашем блоге. Далее, если обработка происходит верно, мы ставим эту задачу на CRON(поищите инструкции как в WP запретить внутрениий крон и использовать CRON из ОС) и лоимся спать. На утро проверяем результат.

    Теперь два важный момента:
    1)Используйте реальный CRON, не встроенный в WP. Встроенный работает тогда, когда на сайт заходит юзер. Нет визита юзера - нет отработавшей задачи.
    2)Почему я говорю про порции в 25 записей? Вы можете упереться в Max execution time. По умолчанию в PHP это 30 секунд. Можете поставить 50, можете 150. Моя логика такая: 1000 / 25 = 40 проходов = 40 минут(запуск крона 1 раз в минуту).

    Готового кода под эту задачу у меня нет.
    Ответ написан
    Комментировать
  • Возможно ли запустить сайт за неделю, если ничего не знаешь?

    kumaxim
    @kumaxim
    Web-программист
    Вам нужно описать, что именно Вы хотите от сайта и какие конкретно изменения Вы планируйте туда вносить. После этого идете на тот же fl.ru и создаете проект на разработку сайта. В Вашем случае это самый быстрый способ запустить именно сайт, а не очередной кусок г****...
    Ответ написан
    Комментировать
  • Почему при импорте Wordpress ничего не получается?

    kumaxim
    @kumaxim
    Web-программист
    Добавить в wp-config.php строчку <?php define('WP_DEBUG', true) ?> и сможешь увидеть больше информации об ошибке.
    Для общего развития можешь почитать "Отладка в Wordpress"
    Ответ написан
    Комментировать
  • Как пользоваться плагином для wordpress Divi Builder?

    kumaxim
    @kumaxim
    Web-программист
    Gantry и Genesis из той же оперы, если верить только сайту Divi Builder'а
    В целом - стандартные шаблоны делаются быстрее, однако, с ростом посещаемости любой билдер начинает стрелять в ногу. Требуется перевестать шаблон уже без него.
    Ответ написан
    3 комментария
  • Как импортировать записи из не стандартного WP XML в WordPress?

    kumaxim
    @kumaxim
    Web-программист
    Вариант написать(сам/нанять кого-либо) конвертер из Вашего формата в формат Wordpress'а Вы не рассматривайте?
    Ответ написан
    Комментировать
  • Как получить данные от БД в Wordpress?

    kumaxim
    @kumaxim
    Web-программист
    Открываем файл wp-config.php и видим там что-то в духе:
    define('DB_NAME', 'wordpress');
    Как же получить значение переменной в PHP, зная ее имя? Разве не очевидно
    echo DB_NAME; // Отобразит wordpress
    Собственно вместо echo подставляй все что тебе нужно и твоя задача решена.
    Ответ написан
    Комментировать
  • Возможно ли узнать логин администратора?

    kumaxim
    @kumaxim
    Web-программист
    Смотри таблицу wp_users в БД. В большенстве случаев логин главного админа будет идти с ID=1
    Ответ написан
    Комментировать
  • Как оптимизировать работу wordpress?

    kumaxim
    @kumaxim
    Web-программист
    Есть парочку major issue, на которые я всегда обращаю внимание при оптимизации чего-либо, например:
    1. Режим работы PHP: mod_apache или fpm
    2. Используется конфигурация с 2-мя веб-серверами или CDN
    3. Насколько древняя версия PHP стоит
    4. Прикрыт ли сам факт того, что сайт работает на WP

    Это 4 пункта, которые на ум приходят просто сразу. Далее - уже смотрю на сам проект, читаю логи, мониторю сайт в течении 1-3 дней. Конкретный ответ "Что делать" - либо копай сам в тех.часть, опираясь на мои 4 пункта, либо ищи компетентного в этих вопросах человека и разговаривай с ним о цене за его услуги(fl.ru в помощь, одним словом).
    Ответ написан
    Комментировать
  • Как реализовать новый Wordpress в поддиректории, но со связью с основным?

    kumaxim
    @kumaxim
    Web-программист
    Смотри в сторону Wordpress Multisite
    Ответ написан
    Комментировать
  • Cornerstone не подхватывает css плагина?

    kumaxim
    @kumaxim
    Web-программист
    Вангую.... Вангую, что тебе проще залить проект куда-нибудь типа heroku, прикрепить к нему любой тестовый домен и дать доступ тех.поддержки купленной темы. Не видя код сказать что-то сложно.
    Ответ написан
    Комментировать
  • Как отключить определенный файл стилей когда происходит переход в админ панель WordPress?

    kumaxim
    @kumaxim
    Web-программист
    Идем в папку wp-contents/plugins, создаем там вложенную папку disable-bootstrap. Копируем в нее любой скелет плагина, хотя бы этот.

    В файле wordpress-plugin-boilerplate.php определеяем еще один произвольный метод, пускай это будет public function disable_css(), в теле которого используем функцию wp_dequeue_style. В качестве параметра нужно передать id того link-тега, которая Вам все ломает. Затем, в конструкторе делайте еще один вызов функции add_action, например, вот add_action('add_action', [$this, 'disable_css'])

    Профит!

    Замечание: мой способ срабоет только, если изначально Вы подключали скрипт через функцию wp_enqueue_style. Если Вы или до Вас там кто-то написал просто link-тег в .php-файл, то Вам поможет только полнотекстовой поиск по всем файлами WP'шки
    Ответ написан
    1 комментарий
  • Почему просиходит системная ошибка при создании класса наследованного из абстракного?

    kumaxim
    @kumaxim
    Web-программист
    Сперва обратите внимание на то, какое у Вас базовое пространство имен: какое-то Ваше или системное?
    Первое что меня смущает
    $this->_registry['settings'] = new Tools\Settings();

    Измени на
    $this->_registry['settings'] = new \Tools\Settings();

    *я добавил ведущий слэш перед Tools. Таким образом ты говоршь интерпритатору: "Класс Settings, который мне нужен, лежит в подпространстве Tools глобального пространства имен"

    И второе, напрмер, твой Tools\Settings
    namespace Vendor\Tools;
    
    use Vendor\Core\Loader\AbstractLoader;
    
    class Settings extends AbstractLoader 
    {
           //// ....
    }


    Поменяй на следующее
    namespace Vendor\Tools;
    
    class Settings extends \Vendor\Core\Loader\AbstractLoader 
    {
           //// ....
    }


    Когда ты наследуешь, именно наследуюешь, нет никакого смысла подключать сторонний namespace через use. Лучше прописать полный путь к базовому классу в заголовке(лично мое мнение). Другое дело, когда ты из стороннего namespace вызываешь классы, причем и не один, тогда да - стоит добавить через use.

    UPD:
    Увидел твою ошибку. Ты в use прописываешь путь до класса, например use Vendor\Core\Loader\AbstractLoader; Это неправильно! В use нужно указывать путь до namespace. Ты пишешь так:
    namespace Vendor\Tools;
    
    use Vendor\Core\Loader\AbstractLoader;
    
    class Settings extends AbstractLoader 
    { ///... }


    В твоем случае корректно будет так
    namespace Vendor\Tools;
    
    use Vendor\Core\Loader;
    
    class Settings extends AbstractLoader { ... }

    Используя use Vendor\Core\Loader говоришь интерпритатору - импортируй мне все классы из пространства имен Vendor\Core\Loader, для того чтобы я мог использовать их здесь. В твоем варианте use Vendor\Core\Loader\AbstractLoader ты говоришь - "Импортируй мне вложенные в класс AbstractLoader классы". Я вообще сомневаюсь, что из абстрактного класса через use можно что-то импортировать. Скорей всего тут у тебя и ругается на 500 ошибку.
    Ответ написан
    2 комментария
  • Возможно ли установить два одинаковых плагина на один сайт?

    kumaxim
    @kumaxim
    Web-программист
    Способ, конечно, не совсем верный и может вызвать кучу побочных глюков на сайте... Хотя, по большей части зависит от того куда там этот плагин и что пишет.

    1. Распоковать архив gimap.zip в папку gimap
    2. Создать копию папки gimap, назвав ее, например, gimap-v2
    3. Заходите в папку gimap-v2
    4. Открыть index.php
    5. Найти в заголовке /* Plugin name: gimap */ - это имя Вашего плагина
    6. Сменить gimap на gimap-v2 - имя, отображаемое у Вас в адмике на странице с плагинами
    7. Залить по ftp обе папки на сервер в папку плагинов: /wp-content/plugins


    После этих манипуляций заходите в амдинку WP на страницу "Плагины". Там будет отображается эти Ваши две копии. Активируйте их.

    Хотя если плагин работает с шорткодами в корректности работы одновременно двух его копий не уверен, они, возможно, будут перезатирать данные друг друга.
    Ответ написан
    2 комментария
  • Как добавить скрипт в исключения для WordPress?

    kumaxim
    @kumaxim
    Web-программист
    Создаешь в корне WP папку zip. Туда кладешь свой php-скрипт. В этой же папке zip создаешь файл .htaccess с содержимым
    RewriteEngine Off

    К самому скрипту потом обращаешься как wp-example-site.org/zip/zip-file/filename/27
    Разумеется, как плагин он у тебя уже не будет виден в WP, поэтому какие-то настройки из него, если они тебе нужны, придется тянуть руками.
    Ответ написан
    Комментировать
  • Не работает do_shortcode в WP?

    kumaxim
    @kumaxim
    Web-программист
    Не до конца все-таки понял суть Вашей проблемы, но если нужно отфильтровать что-то из стандартного вывода WP, то я всегда использую функцию add_filter(). Список всех возможных фильтров смотри здесь
    Ответ написан
    Комментировать
  • Не работают константы WordPress, как починить?

    kumaxim
    @kumaxim
    Web-программист
    Подумайте, откуда WP узнает об этой константе?!
    Если бы Ваш createcat.php был бы include_once() из index.php в шаблоне или каком-либо плагине, тогда нет проблем. Сделайте свой код, например, плагином WP.

    1. Создайте папку внутри /wp-include/plugins/createcat
    2. Положите туда Ваш файл
    3. Переименуйте его в index.php
    4. В начале первыми строчками допишите это
      /*
      	Plugin Name: Create Cat Toster
      	/*

    5. Из админки WP активируйте только что созданный плагин


    WP Руководство разработчика плагинов Вам в помощь.
    Ответ написан
    Комментировать
  • Как написать класс Walker_Nav_Menu для подсписков меню?

    kumaxim
    @kumaxim
    Web-программист
    Документация по классу Walker для WP
    В качестве готового примера можешь посмотреть wp-bootstrap-navwalker

    Читай, анализируй, пиши. Готового кода под такую задачу у меня нет.
    Ответ написан
    2 комментария
  • Оптимизация скорости wordpress?

    kumaxim
    @kumaxim
    Web-программист
    Много запросов к БД за 1 цикл и/или тяжелая не стандартная бизнес-логика в каких-то плагинах. Ничего не зная о сайте сложно что-то более сказать.
    Из стандартны решений могу порекомендовать два, которые в большенстве случаев помогают:
    1. Ставь любой плагин кэширования. Мне лично нравится super cache
    2. Выноси всю статитку на CDN. Через JetPack на Phantom это, помоему сделать легче всего(могу заблуждаться)
    Ответ написан