Ответы пользователя по тегу WordPress
  • Не выводится страница с произвольным типом записи?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Попробуйте 'has_archive' => true
    Также нужно смотреть код single.php
    Ответ написан
    Комментировать
  • Как разрешить HTML теги в комментариях на WordPress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Посмотреть разрешенные теги:
    <?php echo allowed_tags(); ?>

    Вот как массив этих тегов выглядит в ядре:
    <?php
    $allowedtags = array(
        'a' => array(
            'href' => array (),
            'title' => array ()),
        'abbr' => array(
            'title' => array ()),
        'acronym' => array(
            'title' => array ()),
        'b' => array(),
        'blockquote' => array(
            'cite' => array ()),
        'cite' => array (),
        'code' => array(),
        'del' => array(
            'datetime' => array ()),
        'em' => array (), 
        'i' => array (),
        'q' => array(
            'cite' => array ()),
        'strike' => array(),
        'strong' => array(),
        );
    ?>


    Добавить новый тег:
    function my_allowed_html_tags_in_comments() {
      define('CUSTOM_TAGS', true);
      global $allowedtags;
      $allowedtags = array(
          'a' => array(
               'href' => array (),
               'title' => array ()),
          'blockquote' => array(
               'cite' => array ()),
          'cite' => array (),
          'code' => array(),
          'em' => array(),
          'strong' => array(),
          //Вот они, дополнительные теги:
          'pre' => array(),
          'p' => array()
      );
    }
    //Хук
    add_action('init', 'my_allowed_html_tags_in_comments', 10);
    ?>
    Ответ написан
    Комментировать
  • Как вывести все коментарии на определенную страницу в wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Можно, написав кастомный кусочек php-кода. Фокус в том, что плагин - это точно такой же кастомный кусочек кода, так почему бы не изобретать велосипед?

    Что касается самого кода, есть функция get_comments().
    Ответ написан
    Комментировать
  • Плагин отзывы с рейтингом для wp?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    www.wphub.com/5-star-rating-wordpress-plugins
    kk Star Ratings позволяет хардкодить рейтинг в шаблон, соответственно можно сделать чтобы звездочки считали рейтинг поста, но выставить этот рейтинг можно только оставляя комментарий. Другие плагины тоже, возможно, это позволяют - надо смотреть.
    Ответ написан
    Комментировать
  • Как подружиться с облачным хостингом digital ocean?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Если Вам надо поближе к Канаде, советую вместо Digital Ocean использовать cacloud.com

    Что касается настройки серверов в целом, в том числе учитывая WP, могу посоветовать такую проверенную схему:
    - создать на своем компе SSH-ключ, залить его в контрольную панель DO
    - создать дроплет (оптимально для начала тот который за 10$) выбрав установленный SSH-ключ и OS Ubuntu 14.04 LTS x32 + все галочки (бекапы, I/O и прочее), для Канады надо брать регион US.
    - залогиниться, создать нового юзера и дать ему админские права, выключить вход по SSH под рутом, под паролем и залочить только под этого нового юзера, можно еще и порт поменять
    - создать и подключить swap (при 1 Гб оперативки вполне хватит 1Гб свопа)
    - настроить ufw по принципу закрыть все и открыть только ssh, http, https
    - поставить и настроить fail2ban, logwatch, настроить logrotate
    - установить Nginx, PHP5-FPM с OPcache, MariaDB, Memcached
    - настроить это все
    - установить WP, настроить

    Это основное. По всем пунктам в Community DO есть подробные уроки, делается все по сути копи-пейстом команд. Более тонкая настройка производительности - это уже отдельная наука, под конкретный сайт(ы), по ходу будете разбираться.
    Ответ написан
  • Wordpress, видео из вконтакте?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    +1 к @Alexufo. WordPress поддерживает oEmbed, именно через него урл ютуба, твиттера и других популярных сервисов автоматически конвертируется в плеер. Класс oEmbed легко расширяется, и добавить еще одного провайдера (VK) не сложно, если есть знание PHP. Если нет - наймите специалиста.
    Ответ написан
    Комментировать
  • Как осуществить уведомление пользователя Wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    У меня на одном из сайтов реализовано через FeedPress.it
    Это сервис подписки и мониторинга RSS, у него же есть опция подписки по email. Когда я публикую новый пост, он публикуется в RSS-ленту и сервис автоматом рассылает его и по мылу всем подписавшимся пользователям.

    Можно ли отправлять всем подряд, даже если они не дали добро на подписку? Я считаю что это некорректно. По сути это спам. Но реализовать автоматическую подписку можно (например, при регистрации добавить галочку - "получать обновления по почте").
    Ответ написан
    Комментировать
  • Какие фреймворки лучше подходят для создания и ведения блога?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Ответ написан
    Комментировать
  • Как сделать каталог материалов с фильтром по произвольным полям в Wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Custom taxonomies в помощь. По сути, создаете еще одну таксономию (базовые у вас есть - рубрики и метки), создаете меню, которое содержит именно эту таксономию. Если я правильно понял задачу, то на этом все, работа сделана. Если же нужны гибкие множественные фильтры - есть готовые плагины, а в базе подход тот же - либо custom taxonimes, либо custom fields.

    Вот тут смотрите мой ответ - ссылки на плагины.
    Ответ написан
    Комментировать
  • Wordpress: как создать запись и присвоить ее нужной странице?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Для начала, "главная" - это НЕ страница. Физически такой страницы не существует, это динамически создаваемый список последних постов (записей). А страница - это физически существующая страница. Для вашей задачи подойдут child pages (те же страницы, только под родителем), но шаблоны вывода придется править вручную.
    Ответ написан
  • Как добавить язык на сайт wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Забейте на платный и тяжеленный WPML. Используйте Polylang.
    Ответ написан
    Комментировать
  • Оптимизация подключения скриптов/css в Wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    А вы про conditional проверки читали? is_category( $cat_id ) например, их очень много. Полная гибкость, есличо. Проверяете на необходимое условие и грузите что надо, нет необходимости плодить шаблоны. Что касается скриптов и стилей, подгружаемых плагинами - всегда есть возможность выяснить на каком хуке и приоритете они грузятся и модифицировать. Можно отключить и подключить вручную там и тогда, когда нужно. Или наоборот, отключать где не нужно. В общем, есть много способов это сделать, без дополнительных шаблонов и плагинов.

    Например, если я в процессе разработки проекта вижу скрипты и стили какого-то плагина, которые 100% будут site-wide и всегда, я отключаю их динамическую загрузку самим плагином, вручную переношу скрипты и стили к своим и сливаю их. Минус - со временем, когда плагин обновит версии скриптов, придется вручную их менять. Но, так как мы на поддержке все равно раз в месяц или по мере появления Security фиксов проводим maintenance, это не проблема. Плюс - никаких лишних http-запросов, объединенные скрипты и стили в один лучше компресятся.
    Ответ написан
  • Как сделать разный вид анонсов новостей на главной странице в Wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Вариантов решения много. Идеальным со всех точек зрения и оптимальным будет:
    1. Создать метабокс "Формат вывода" с опциями в виде переключения радиокнопками или списком выбора (те, которые Вы перечислили + любые другие). Создать его можно либо вручную через functions.php либо с помощью одного из массы плагинов (рекоммендую Advanced Custom Fields).
    2. В индексе в WordPress Loop получаете значение этого поля
    3. Подключаете соответствующий шаблон

    Если же Вам не надо полную свободу выбора, а, скажем, жестко каждая отдельная рубрика (или по несколько рубрик) должна иметь свой формат вывода, тогда дополнительный metabox или даже обычный custom fields не нужен. Проверяете в Loop айдишку группы или slug, подключаете нужный шаблон.

    Также, можно включить форматы записей (стандартный, галерея, фото, видео, цитата, ссылка и т.д.) и перенастроить их под себя.
    Ответ написан
    1 комментарий
  • Как поменять домен Wordpress в файлах?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Можно в wp-config.php вручную прописать. Я вообще эти опции из базы никогда не использую. Во-первых - мешает синхронизации между локалкой, тестовым сервером и живым. Во-вторых это лишние запросы в бд.

    Оптимальный код (первые строчки - ответ на ваш вопрос, остальное - бонус):

    /**
     * Give WordPress it's own directory.
     */
    define( 'WP_SITEURL', 'http://' . $_SERVER['SERVER_NAME'] . '/core' );
    define( 'WP_HOME',    'http://' . $_SERVER['SERVER_NAME'] );
    
    /**
     * Link our custom wp-content directory.
     */
    define( 'WP_CONTENT_DIR', dirname( __FILE__ ) . '/content' );
    define( 'WP_CONTENT_URL', 'http://' . $_SERVER['SERVER_NAME'] . '/content' );


    В этом случае корневая директория у вас выглядит так:
    /core/ - оригинальная папка wordpress из архива, скачанного с wordpress.org (имя любое)
    /content/ - копия папки wp-content (плагины, темы, загрузки)
    index.php
    wp-config.php
    .htaccess

    Также не забудьте в оригинальной папке /wp-content/ грохнуть все плагины и темы, папки должны присутствовать, но быть пустыми (только index.php, который там валяется)
    Ответ написан
    Комментировать
  • Как реализовать вывод описания фотографии в WordPress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    1. Зачем через `has_shortcode();`, можно ведь по-другому...
    2. Немного модифицированное предложение @ZetRider:
    if ( get_post_gallery() ) :
    		$gallery = get_post_gallery( get_the_ID(), false );
    // array of ids;
    		$ids = explode(',', $gallery['ids']);
    // array of urls;
    		$images = $gallery['src'];
    		$i = 0;
    		foreach( $images as $image ) {
    			$title = get_the_title($ids[$i]);
    // тут свой формат вывода
    			echo '<img src="'.$image.'"><span>'.$title.'</span><br>';
    			$i++;
    		}
    	endif;


    Но, функция `get_the_title();` дает нам только 1, и не самое лучшее поле. Имея массив IDшек (а это айдишки attachment'ов) можно воспользоваться одной из функций именно аттачментов - там вернется больше данных. Например, можно заюзать `wp_get_attachment_image()`, `wp get attachment metadata()`.
    Ответ написан
  • Как в WordPress форматировать название сайта и краткое описание?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Для этих целей существует Theme Customization API

    На выходе - удобная для юзера работа с настройками, собственно в настройках темы, прямо с визуальным предпросмотром + легкое внедрение для разрабочика, благодаря удобному API. Уроков в сети - пруд пруди.
    Ответ написан
    Комментировать
  • Как организовать процесс разработки сайтов на Wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Знакомая ситуация, до боли знакомая.
    Я бы в этом случае не городил сложным схем - больше шансов запутаться и усложнить (замедлить) процесс, а скорость тут у нас и так не самая сильная сторона. Особенно если клиентский проект на shared-хостинге и git-ом даже не пахнет. Справляюсь так же, как и @i_dozi , "для себя" использую приватные репо на bitbucket.org.
    Относительно мегасрочных мелких фиксов "по-живому" - стараюсь собирать небольшую пачку и делать оптом, но иногда все же приходится делать срочный одиночный фикс, прямо на живом сервере (бывало делал такие правки с планшета, сидя в маршрутке), после этого всегда копирую на локалку и обновляю везде, в том числе репо. Делаю это как можно раньше, чтобы не потерялось. Если вдруг возникает ситуация, когда сижу и не могу вспомнить, где более свежая версия (такое случалось), или долго в проект не лазил, а за это время клиент сам мог что-то поменять - diff в помощь.
    Ответ написан
    Комментировать
  • Какой плагин подойдёт для фильтрации поиска WordPress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Есть такие плагины, и немало.
    Начните с этих:
    wordpress.org/plugins/search-filter
    wordpress.org/plugins/query-multiple-taxonomies
    Ответ написан
    Комментировать
  • Плагин для wordpress - каталог расширений?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    @AlexPTS предлагает правильное решение. Создается CPT (Custom Post Type), таксономия своя, с помощью ACF (Advanced Custom Fields) или аналогичного решения создаются необходимые метабоксы.
    Ответ написан
    Комментировать
  • Экспорт новостей из Strawberry в Wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    @xSkyFoXx дело говорит. Делайте через RSS, XML и пр., но только не пытайтесь перенести руками данные из бд в бд - ни к чему хорошему это не приведет.
    Ответ написан
    Комментировать