Как создать виджет wordpress
Перейти к содержимому

Как создать виджет wordpress

  • автор:

Как добавить виджет на WordPress

Вариант 1 — через меню виджетов в консоли

1. В админке зайдите в меню Внешний вид — Виджеты

2. Выберите вариант HTML-код и выберите из выпадающего списка ту локацию, где вы хотите разместить виджет. Вероятнее всего, вам подойдет правая колонка, но будет зависеть от темы и ее настроек. Можете попробовать разные варианты.

d2cc31303752c62632d7cfe11a1945d2.png

Нажмите «Добавить виджет»;

3. В появившееся текстовое поле добавьте код виджета, скопированный из Омнидеска:

633956aaa11d271a0259ee8c1e829aee.png

Поле «Заголовок» обязательно оставьте пустым. Сохраните изменения и проверьте, отображается ли виджет на сайте корректно. Обратите внимание, что если вы используете какие-либо блокираторы рекламы, они могут скрывать виджет.

Вариант 2 — с помощью плагина

1. Установите плагин DCO insert analytics code и активируйте его.

2. Зайдите в настройки плагина по пути Консоль — Настройки — DCO insert analytics code.

3. Выберите блок «Перед » и вставьте код виджета Омнидеска в текстовое поле и сохраните изменения.

ee6457f5d99fd0b632bfc156b407afbc.png

При помощи плагина вы можете реализовать сценарий, при котором авторизованным и неавторизованным пользователям будет показываться свой вариант виджета. Создайте два разных виджета в Аккаунте администратора в Омнидеске. Код первого вставьте в блок «После » плагина, а код второго — в блок «Перед ». Под каждым из блоков установите, кому должен отображаться виджет — вошедшим пользователям или наоборот. Сохраните изменения.

3b7eb9e31728ab2b0866e768c27fd8d9.png

Таким образом вы сможете, к примеру, ограничить количество каналов для создания обращений посетителям без аккаунта на вашем сайте или установить разный уровень SLA для каждой из групп.

Настройка отображения виджета

Если вы хотите, чтобы виджет отображался не на всех страницах сайта, то эта задача также решается плагином. Вот один из вариантов:

1. Установите плагин Widget Logic;
2. В настройках виджета в соответсвующем поле пропишите необходимые вам условия.

Как создать виджет wordpress

  1. Перейдите в Внешний вид > Настройка на экране администрирования WordPress.
  2. Выберите меню виджетов в интерфейсе настройки темы, чтобы получить доступ к экрану настройки виджета.
  3. Нажмите на стрелку вправо в области виджетов, чтобы вывести список уже используемых виджетов.
  4. Нажмите кнопку «Добавить виджет» в нижней части боковой панели. Он показывает список доступных виджетов.
  5. Выберите виджет, который хотите добавить. Виджет добавиться на боковую панель.
  6. Просмотрите свой сайт, и вы должны увидеть содержимое своего нового виджета.
  7. Чтобы упорядочить виджеты на боковой панели, перетащите виджеты в нужном вам порядке или нажмите ссылку «Изменить порядок» и нажимайте на стрелку вверх и вниз, чтобы разместить каждый виджет, и нажмите Готово после операции упорядочивания.
  8. Чтобы настроить функции виджета, нажмите стрелку вниз справа, чтобы развернуть интерфейс виджета.
  9. Чтобы удалить виджет, нажмите «Удалить» на предыдущем шаге.

Если ваша тема не поддерживает интерфейс настройки тем, вы можете использовать следующие шаги:

  1. Перейдите во Внешний вид > Виджеты на экране администрирования WordPress.
  2. Выберите виджет и либо перетащите его на боковую панель, где вы хотите, чтобы он отображался, либо нажмите на виджет (выберите боковую панель назначения, если в вашей теме их несколько) и нажмите кнопку «Добавить виджет». Вариантов боковой панели может быть несколько, поэтому начните с первого. После этого WordPress автоматически обновляет тему.
  3. Просмотрите сайт. Вы должны обнаружить, что элементы боковой панели «по умолчанию» исчезли, и отображается только новое дополнение.
  4. Вернитесь на экран виджетов, чтобы продолжить добавление виджетов.
  5. Чтобы поменять порядок виджетов на боковой панели или в области виджетов, кликните и перетащите их на нужное место.
  6. Чтобы настроить функции виджета, кликните стрелку вниз в правом верхнем углу, чтобы развернуть интерфейс виджета.
  7. Чтобы сохранить настройки виджета, нажмите «Сохранить».
  8. Чтобы удалить виджет, нажмите «Удалить».

Если вы хотите удалить виджет, но сохранить его настройку для возможного использования в будущем, просто перетащите его в область «Неактивные виджеты». Вы можете добавить их обратно в любое время оттуда. Это особенно полезно, когда вы переключаетесь на тему с меньшим количеством или разными областями виджетов.

При смене тем часто есть некоторые различия в количестве и настройке областей/боковых панелей виджетов, и иногда эти конфликты делают переход менее плавным. Если вы изменили тему и вам кажется, что виджеты отсутствуют, прокрутите экран вниз до области «Неактивные виджеты», где будут сохранены все ваши виджеты и их настройки.

Включение режима доступности с помощью параметров экрана позволяет использовать кнопки «Добавить» и «Изменить» вместо перетаскивания.

Области виджетов

Хотя области виджетов обычно размещаются на боковых панелях веб-страницы, тема может размещать области виджетов в любом месте страницы. Например, помимо обычных расположений боковой панели, тема Twenty Seventeen имеет область виджетов в подвале каждой страницы.

Если вы хотите разместить виджет где-нибудь в своей теме, который не имеет предварительно определенной области виджетов, вам потребуются некоторые знания программирования и следует следовать инструкциям в разделе API виджетов, который можно найти здесь.

Использование текстовых виджетов

Текстовый виджет — один из наиболее часто используемых виджетов WordPress, который поставляется с каждой установкой WordPress. Он позволяет пользователям добавлять текст, видео, изображения, настраиваемые списки и многое другое на свои сайты WordPress.

Чтобы использовать текстовый виджет WordPress:

  1. Перейдите в Внешний вид > Настройка на экране администрирования WordPress и выберите меню виджетов в настройке темы. Или перейдите во Внешний вид > Виджеты на экранах администрирования WordPress.
  2. Откройте боковую панель, на которую вы хотите добавить текстовый виджет.
  3. Найдите текстовый виджет в списке виджетов.
  4. Нажмите и перетащите виджет в то место, где вы хотите, чтобы он появился.

Чтобы открыть и отредактировать текстовый виджет:

  1. Нажмите стрелку вниз справа от заголовка текстового виджета.
  2. Задайте заголовок текстового виджета (необязательно).
  3. Добавьте текст или HTML-код в поле или отредактируйте то, что там есть.
  4. Выберите параметр «Автоматически добавлять абзацы», чтобы обернуть каждый блок текста тегом абзаца HTML (рекомендуется для текста).
  5. Нажмите «Сохранить», чтобы сохранить текстовый виджет.
  6. Нажмите «Закрыть», чтобы закрыть текстовый виджет.
  7. Просмотрите результаты и при необходимости внесите изменения.

Текстовый виджет может содержать различные HTML, XHTML и мультимедийные ссылки и проигрыватели, такие как встраивание видео и объектов.

Добавление кода в текстовый виджет

Базовый HTML, встраивание и JavaScript легко добавляются в текстовый виджет WordPress. Большинство кодов для встраивания мультимедиа с сайтов социальных сетей будут работать в текстовом виджете WordPress. Однако активный код и языки программирования, такие как PHP, не будут работать, поскольку виджет удалит код, который не может отобразить.

Использование виджетов RSS

Виджет RSS позволяет вам интегрировать внешний источник ленты для контента в область виджетов вашего сайта, такую ​​как ваша учетная запись Twitter, сообщения Facebook, сообщения Google+ или другие блоги.

Виджет RSS отображает свежее опубликованное содержимое из любого источника с доступной RSS-лентой. Это идеальный способ интеграции внешнего содержимого на ваш сайт.

По умолчанию виджет WordPress RSS отображает заголовок сообщения или первые 100 (или около того) символов твита или длинного сообщения без названия. Они представлены либо в виде ссылки, либо со ссылкой на исходный источник в зависимости от дизайна и структуры ленты.

  1. Введите URL-адрес RSS-канала в первое поле, скопированный с исходной страницы для контента, который вы хотите включить в свою боковую панель или другое пространство с виджетами.
  2. Дайте ленте название (это необязательно, но дает вам возможность продемонстрировать источник содержимого).
  3. Сколько элементов вы хотите отобразить? По умолчанию отображается 10, но вы можете выбрать от 1 до 20 сообщений.
  4. «Отображать содержимое элемента?»: Это позволяет отображать отрывок из содержимого, а не только заголовок.
  5. «Отображать автора элемента, если он доступен?»: Если вы хотите указать автора материала, установите этот флажок, чтобы отобразить автора.
  6. «Отобразить дату элемента?»: Если доступно, будет показана дата исходного содержимого.

Вы можете добавить несколько виджетов RSS для входящих каналов на боковую панель WordPress и в другие области вашего сайта с виджетами.

Дополнительные источники

  • Виджетизирующие темы
  • API виджетов
  • Советы WordPress по изучению текстового виджета WordPress
  • Историческая справка об появлении виджетов WordPress

Как создать виджет в WordPress

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

Чисто технически, виджет WordPress — это, так же как и плагин, набор файлов, которые копируются в определённую папку на сайте. В этих файлах задаются специальные инструкции для “движка”, благодаря которым система распознает сам факт виджета и позволяет его разместить в той или панели виджетов (число панелей и места их расположения зависят от конкретной WordPress-темы).

Система виджетов WordPress

В WordPress присутствуют мощные инструменты, позволяющие гибко управлять виджетами (добавлять на сайт, удалять, изменять их расположение). Для этого существует отдельный админ-раздел — Внешний вид -> Виджеты.

Раздел Виджеты

В левой части окна располагаются доступные к отображению виджеты, а в правой — панели виджетов. Добавить виджет на панель довольно просто. Для этого его следует просто перетащить в нужное место.

Раздел Виджеты

Как создать виджет в WordPress

“Движок” WordPress поставляется с целым набором различных виджетов. Но часто их функциональности бывает недостаточно для решения тех или иных задач. Поэтому и возникает необходимость создать свой, который будет отвечать всем требованиям.

Создание виджетов в WordPress подразумевает наличие навыков программирования на популярном скриптовом языке PHP , предназначенного для веб-разработки. В этом материале мы не будем детально рассматривать синтаксис языка, так как это уже отдельная тема. Мы лишь коснемся тех его конструкций, которые необходимы для успешного создания виджета.

В системе WordPress создать виджет можно двумя способами. Первый заключается в создании отдельного плагина, после активации которого будет доступен виджет для использования. Мы же воспользуемся более легким способом — добавим код виджета непосредственно в основной конфигурационный файл темы — functions.php.

Если Вы не знаете, как редактировать functions.php, то в этом случае Вам поможет плагин ProFunctions .

Разработка виджета

Для примера создадим самый простой виджет, который будет выводить название и описание сайта.

Главная страница сайта

Для создания виджетов в WordPress применяется объектная модель программирования языка PHP. В “движке” имеются все необходимые инструменты для этого. Так, для виджетов существует специальный класс WP_Widget , использование которого и позволит успешно создать необходимый виджет для сайта WordPress. Он включает около 20 различных методов. Однако нам потребуются лишь четыре из них:

  • __construct() — регистрация базовой информации о виджете;
  • widget() — вывод виджета в области виджетов на сайте;
  • form() — параметры виджета, отображаемые в области администрирования WordPress;
  • update() — обновление настроек виджета в админ-панели.

Следующий метод, который мы добавим, будет widget(). Он позволит вывести виджет в области виджетов на сайте.

public function widget( $args, $instance ) < $title = apply_filters( 'widget_title', $instance[ 'title' ] ); $blog_title = get_bloginfo( 'name' ); $tagline = get_bloginfo( 'description' ); echo $args['before_widget'] . $args['before_title'] . $title . $args['after_title']; ?>

Site Name:

Tagline:

Метод widget() содержит код, который генерирует фактический контент, отображаемый виджетом на сайте. В нашем примере мы предоставим пользователям возможность отображать, кроме названия и описания сайта, еще и заголовок самого виджета. Поэтому для этого нужно будет захватить этот заголовок, а затем использовать get_bloginfo() , чтобы отобразить название и описание блога.

Также следует понять еще кое-какие моменты.

Переменная $args[] содержит массив аргументов, которые могут использоваться при построении вывода виджета. Значения, содержащиеся в $args, задаются активной темой при регистрации области боковой панели.

$instance[] — это переменная, в которую загружаются значения, связанные с текущим экземпляром виджета. Если Вы добавили виджет на боковую панель дважды, каждый экземпляр $instance будет содержать значения, специфичные для каждого экземпляра виджета.

Фильтр widget_title возвращает заголовок текущего экземпляра виджета.

get_bloginfo() — функция, которая может использоваться для возврата всех видов метаданных WordPress-сайт, включая его название и описание.

После определения нескольких переменных, используя информацию из приведенного выше списка, код в примере продолжает формировать фактический вывод контента, который состоит из информации из переменной $args, заголовка, названия и описания сайта.

Обратите внимание, что практически каждый виджет должен включать аргументы before_widget, after_widget, before_title и after_title. Они необходимы для обеспечения того, чтобы каждый виджет был вложен в специфичные для темы теги HTML.

На следующем этапе добавим метод form(), позволяющий сохранять параметры виджета, отображаемые в админ-панели WordPress.

public function form( $instance ) < $title = ! empty( $instance['title'] ) ? $instance['title'] : ''; ?>

В методе form() возвращаются текущие значения конкретного экземпляра виджета, вызывая параметр $instance. Затем происходит проверка текущей информации об экземпляре, чтобы узнать, является ли заголовок пустым. Если это не так, будет выведено текущее название.

Раздел Виджеты

Следующий на очереди — метод update(), отвечающий за обновление настроек виджета в админ-панели.

public function update( $new_instance, $old_instance )

Видно, что метод принимает два параметра: $new_instance и $old_instance. Первый содержит значения, добавленные в форму настроек виджетов. Второй содержит существующие настройки (если таковые существуют).

Метод update() должен соответствующим образом проверять новые параметры, а затем назначать их переменной $instance и возвращать эту обновленную переменную.

Заключительным этапом создания нового виджета будут его регистрация и активация.

function wpschool_register_widget() < register_widget( 'wpschool_example_widget' ); >add_action( 'widgets_init', 'wpschool_register_widget' );

Тут, во-первых, создается функция для регистрации виджета, используя имя объекта виджета для его идентификации. Затем идет привязка функции регистрации к WordPress, используя хук widgets_init.

Отметим, что эта часть кода добавляется за пределы класса wpschool_example_widget. Когда он будет вызван, он подтянет виджет с соответствующим именем и запустит весь код, содержащийся в методах класса.

После добавления всего кода в файл functions.php в админ-разделе Внешний вид -> Виджеты должен появится виджет с названием WPSchool Widget, который теперь доступен для добавления на панель виджетов Вашей темы.

Полный текст нашего виджета:

/* Виджет WPSchool Widget */ class wpschool_example_widget extends WP_Widget < // Установка идентификатора, заголовка, имени класса и описания для виджета. public function __construct() < $widget_options = array( 'classname' =>'wpschool_widget', 'description' => 'Это наш первый виджет', ); parent::__construct( 'wpschool_widget', 'WPSchool Widget', $widget_options ); > // Вывод виджета в области виджетов на сайте. public function widget( $args, $instance ) < $title = apply_filters( 'widget_title', $instance[ 'title' ] ); $blog_title = get_bloginfo( 'name' ); $tagline = get_bloginfo( 'description' ); echo $args['before_widget'] . $args['before_title'] . $title . $args['after_title']; ?>

Site Name:

Tagline: // Параметры виджета, отображаемые в области администрирования WordPress. public function form( $instance ) < $title = ! empty( $instance['title'] ) ? $instance['title'] : ''; ?>

get_field_name( 'title' ); ?>" value="" />

// Обновление настроек виджета в админ-панели. public function update( $new_instance, $old_instance ) < $instance = $old_instance; $instance[ 'title' ] = strip_tags( $new_instance[ 'title' ] ); return $instance; >> // Регистрация и активация виджета. function wpschool_register_widget() < register_widget( 'wpschool_example_widget' ); >add_action( 'widgets_init', 'wpschool_register_widget' );

Также читайте: Как изменить внешний вид меню на сайте WordPress с помощью плагина Макс Мега Меню.

Нажмите, пожалуйста, на одну из кнопок, чтобы узнать понравилась статья или нет.

Виджеты в WordPress

Хотите больше практики? Рекомендую тогда посмотреть мой видеоурок по виджетам.

Виджеты — это одна из многих потрясающих возможностей WordPress. Если для того, чтобы редактировать контент сайта, мы используем редактор и метабоксы, то для изменения содержимого сайдбара или футера как раз-таки и нужны виджеты.

По сути виджеты можно добавлять куда угодно на страницах сайта, но это зависит от темы WordPress, которую вы используете, точнее от количества зарегистрированных в ней сайдбаров. Есть темы, которые и вовсе не поддерживают виджеты.

Как добавить или удалить виджеты (для начинающих)

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

Если с этим разобрались, переходим в админке на страницу Внешний вид > Виджеты. Видите список доступных виджетов? Для того, чтобы добавить виджет на сайт, нужно перетащить его в одну из областей справа (сайдбаров).

Добавление виджета в сайдбар.

Добавляем виджет календаря в главную боковую колонку.

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

Альтернативный способ добавления виджета в сайдбар.

Когда виджет будет добавлен, мы увидим его настройки. В виджете «Календарь» это заголовок:

Настройки виджета «Календарь»

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

Для того, чтобы удалить виджет, нажимаем ссылку «Удалить» (её видно на предыдущем скриншоте). Если же вы хотите лишь временно отключить виджет, сохранив его настройки, перетаскиваем его в блок «Неактивные виджеты», который находится под блоком «Доступные виджеты».

Отключение стандартных виджетов WordPress

Если вы не используете и не планируете использовать какой-либо из стандартных виджетов WordPress, вы можете полностью отключить его при помощи функции unregister_widget(), после чего виджет перестанет отображаться в админке на странице Внешний вид > Виджеты, также он исчезнет и со страниц сайта.

Для отключения виджетов можете воспользоваться готовым кодом ниже:

  1. Вставьте код в файл functions.php текущей темы.
  2. Удалите или закомментируйте строки с теми виджетами, которые удалять не нужно.
  3. И только потом можете сохранить файл.
function true_remove_default_widget() { unregister_widget('WP_Widget_Archives'); // Архивы unregister_widget('WP_Widget_Calendar'); // Календарь unregister_widget('WP_Widget_Categories'); // Рубрики unregister_widget('WP_Widget_Meta'); // Мета unregister_widget('WP_Widget_Pages'); // Страницы unregister_widget('WP_Widget_Recent_Comments'); // Свежие комментарии unregister_widget('WP_Widget_Recent_Posts'); // Свежие записи unregister_widget('WP_Widget_RSS'); // RSS unregister_widget('WP_Widget_Search'); // Поиск unregister_widget('WP_Widget_Tag_Cloud'); // Облако меток unregister_widget('WP_Widget_Text'); // Текст unregister_widget('WP_Nav_Menu_Widget'); // Произвольное меню } add_action( 'widgets_init', 'true_remove_default_widget', 20 );

Эта функция позволяет удалять не только стандартные виджеты. В качестве параметра функции вы можете указать название класса любого виджета (например который был зарегистрирован в каком-либо плагине).

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

Создание собственного виджета

Добавить свой виджет с настройками в WordPress совсем не трудно, но конечно для этого не помешало бы хоть немного разбираться в PHP. Описывать как работает PHP-код в этом посту я не буду, просто задайте свой вопрос в комментариях, если у вас возникнут какие-либо трудности с кодом.

А сейчас мы будем создавать виджет популярных постов — выведем отсортированные по количеству комментариев записи через WP_Query.

Вставляем этот код в functions.php :

Я перетащил этот код «как есть» (естественно удалив первую строчку Внешний вид > Виджеты мы видим наш виджет:

Создание виджета в WordPress

Давайте перетащим его в какой-нибудь сайдбар справа:

Параметры виджета

Вот и всё, указываем заголовок виджета (если нужно), количество постов, которое мы хотим вывести и нажимаем «Сохранить» — после этого виджет появится на сайте.

Список плагинов с полезными виджетами

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

Для того, чтобы добавить какой-либо из этих плагинов к себе на сайт, копируете его название, переходите в админке в Плагины > Добавить новый и вставляете в форму поиска скопированное название.

Подробно описывать каждый плагин я не буду — описание почти каждого из них тянет на новый пост. Устанавливайте, смотрите, тестируйте (на момент публикации этого поста каждый из плагинов был протестирован мною лично и всё работало отлично).

  • Beautiful Yahoo Weather — виджет прогноза погоды, довольно неплохой и красивый по сравнению с аналогами. Но для этих целей наверное лучше использовать текстовый виджет WordPress в связке с информерами от Gismeteo, Яндекса и т.д.
  • NextGEN Gallery — плагин для создания и управления галереями изображений в WordPress, одна из функций которого — виджет галереи.
  • Search by Google — форма поиска по сайту от Google (Google Custom Search).
  • Slick Contact Forms — виджет формы обратной связи.
  • Tabbed Login Widget — виджет авторизации, сделан в виде трех вкладок — «Вход», «Регистрация», «Забыли пароль», весьма удобный.
  • WP Currency Converter — конвертер валют.
  • WP Editor Widget — используйте редактор WordPress для заполнения этого виджета.
  • WP-Cumulus — добавляет флэш-облако тегов и/или категорий.
  • WP-Polls — удобный плагин для создания опросов на сайте.
  • Yet Another Related Posts Plugin (YARPP) — мощный плагин для вывода похожих записей.
  • Youtube Channel Gallery — виджет со свежими видео с канала на YouTube. Виджет выглядит очень красиво, хорошо и легко настраивается.

Со временем список будет пополняться.

Я не стану рассматривать все остальные виджеты социальных сетей (Facebook, Вконтакте, Twitter и т.д.) — в принципе официальные виджеты вполне удобные — просто копируем код, который нам дают и вставляем его в вордпрессовский виджет «Текст».

Посты по теме:

  • Сайдбары в WordPress
  • Добавление PHP-кода в виджеты WordPress без использования плагинов
  • is_active_widget() — проверяет, добавлен ли виджет в сайдбар
  • register_widget() — регистрирует виджет
  • unregister_widget() — отменяет регистрацию виджета
  • the_widget() — позволяет вывести виджет непосредственно через PHP, за пределами сайдбара

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

  • Общая информация
  • Отключение виджетов в админке
  • Создание своего виджета
  • Плагины с полезными виджетами
Комментарии — 75

серька 25 Сен 2014

я удаляю все виджеты и в панели виджетов их действительно нет но на сайте они весят все! как исправить? старый шаблон у меня

Миша 26 Сен 2014
попробуйте также удалить их из сайдбара 🙂
серька 26 Сен 2014
как из сайдбара то я их удалю?
Миша 26 Сен 2014

Надо нажать ссылку Удалить:

Ильнур 16 Окт 2014
А если нет витжитов не на панели стоит WP4 как их вернуть
Миша 16 Окт 2014
А есть ссылка в меню Внешний вид > Виджеты?
ильнур 16 Окт 2014
в моем wp 4 такой ссылки нет
Миша 16 Окт 2014
Всё понятно, тогда нужно сперва активировать сайдбар, об этом написано здесь.
Ильнур 17 Окт 2014
спасибо заработало. но вкладки Фон нет .
Сергей 17 Окт 2014
Здравствуйте Миша. Пытаюсь подключить виджет стандартным способом в function.php:

require_once( get_template_directory() .'/functions/widgets/widget-tweets.php' );

а не получается, и что самое интересное, в других темах все нормально, все работает. Не подскажете, в чем может быть причина? Где-то в теме запрещено подключение? Не пойму блин.
Полазил в кодексе вордпресс и смог подключить только таким способом:

require plugin_dir_path( __FILE__ ) . '/functions/widgets/widget-tweets.php' );

а теперь сижу и думаю, так вообще можно подключать?
Может таким способом нельзя подключать виджеты.
Но больше волнует первый вопрос, почему не подключаются виджеты.
Помогите пожалуйста Миша. Заранее благодарен.

Миша 17 Окт 2014

Сергей, здравствуйте!
Так подключать нельзя ни в коем случае — для того, чтобы в теме появились виджеты, нужно зарегистрировать области для них, всё подробно расписано в этом посту.

Сергей 17 Окт 2014

Нет Миша, вы меня не поняли. Все области уже у меня зарегистрированы и виджеты уже есть в теме, я просто хочу подключить еще один виджет, вообщем у меня есть платная тема, я из нее выдернул виджет твитера, создал папку «widgets» в своей теме,все по аналогии платной темы, и вот хочу добавить его к уже существующим, вот таким образом(через файл function.php):

require_once( get_template_directory() .'/widgets/widget-tweets.php' );

проверял на других темах, все отлично работает и в платных темах виджеты подключены точно так же.
Но почему то к моей теме он не хочет таким образом подключаться.
Вот мне интересно почему?
В других темах все работает на ура, специально подключал ко всем стандартным темам вордпресс.
Может вы знаете почему не срабатывает такой способ подключения?

Сергей 17 Окт 2014
Все, нашел проблему, просто я баран. 🙂
Прошу прощения, что отвлекаю по пустякам.
Миша 17 Окт 2014
Ок ) в чем была проблема?
Сергей 17 Окт 2014

В моих кривых руках и в невнимательности. 🙂
В админ панель темы подключал, а не к теме самой.
Говорю же, баран слепошарый я.

Ильнур 17 Окт 2014

Во вкладке Внешний вид есть только пункты Темы, Редактор и Настроить, больше ничего нет.
Пункты: Виджеты, Меню, Заголовок, Фон отсутствуют. переустанавливал WP, Ставил на другой компьютер ничего не помогает

Миша 17 Окт 2014
Даю наводку 🙂 add_theme_support().
Ильнур 17 Окт 2014
может дело в том что я создаю свой новый шаблон
Дмитрий 29 Окт 2014

Добрый день!
а где именно находится стиль виджета?
хочу изменить цвет фона и рамки блока где выводятся виджеты.

Миша 29 Окт 2014

Добрый день!
Вероятнее всего — в файле style.css прямо в папке с темой.
Если нет, то кликните правой кнопкой по виджету и выберите пункт меню «Проверить элемент» (для Google Chrome) и там будет видно, в каком файле какие стили находятся.

Константин 13 Ноя 2014

Здравствуйте!
Сделайте поиск по блогу, чтобы эту статью найти пришлось через расширенный поиск гугла искать.

Миша 13 Ноя 2014

Добрый день!
Поиск в планах 🙂 а пока что можете воспользоваться URL запросом https://misha.agency/?s=поисковой_запрос

Лена 4 Дек 2014
Плагин активирован, а новые виджеты не появились ? 🙁
Роман 4 Янв 2015

Всем привет. уто может помочь? Поставил стандартный виджет избранных постов в боковую панель. Там вводится миниатюра и название поста. И в кириллице там где название длинное проставляется троеточие(�. ) и перед троеточием появляется маленький ромбик и знак вопроса. Ну как при не корректном отображение кириллицы. Что делать? как его убрать ? Если что вот сайт смотрите в правой боковой http://applives.ru/

Миша 4 Янв 2015

Привет!
Ищите функции строковые функции и добавляйте в ним приставку mb_ , например substr -> mb_substr .

Роман 5 Янв 2015
Михаил , можно немного подробнее, где искать и что искать ? 🙂
Миша 6 Янв 2015

Могу скинуть разве что ссылку на мануал по mb-функциям http://php.net/manual/en/ref.mbstring.php 🙂 Либо пообещать, что напишу пост, подробно охватывающий этот вопрос (выйдет в публикацию 16 января).

Роман 6 Янв 2015
Вот это по Мужски. 🙂 спасибо
Сергей 8 Янв 2015

Здравствуйте, Михаил! В конце Вашей статьи Вы пишите «просто копируем код, который нам дают и вставляем его в вордпрессовский виджет «Текст».» Идея такая — меня не устраивает внешний вид виджета «поиск по сайту» и я хочу вставить в него иконку, которая будет хорошо вписываться в общий внешний вид сайта. Если я правильно понял, виджет «текст» может принимать любой вид, главное вставить в него правильный php код. Вставлять картинку (иконку) я научился, а вот где взять код того же виджета «поиск по сайту» не пойму. Помогите пожалуйста.

Миша 9 Янв 2015
Здравствуйте!
PHP-код виджет текст «Текст» не поддерживает, только HTML.
Сергей 9 Янв 2015

Верно, ошибся. HTML. Я нашел, как мне кажется, форму поиска, у себя на сайте. Она находится здесь — wp-icludes/default/widgets.php и выглядит она как длинная непонятная запись. Могу ли я прислать Вам её, что бы разобраться что куда вставлять?

Миша 10 Янв 2015
Оттуда код брать не нужно. Вот вам форма:

form action="http://адрес вашего сайта"> input type="text" name="s" style="color: #c1ef65;">"s" /> button>Поискbutton> form>

Алексей 25 Фев 2015

Здравствуйте! подскажите пожалуйста что нужно добавить в код вашего виджета а что убрать чтобы сделать виджет «Рубрики»

Миша 26 Фев 2015
Доброго времени суток!
Ну, функция wp_list_categories() вам поможет.
Алексей 26 Фев 2015
Посмотрите пожалуйста я не чего лишнего не написал?
Миша 26 Фев 2015
На первый взгляд — всё ок.
Алексей 11 Апр 2015

Здравствуйте Подскажите пожалуйста! Как можно запретить в коде, чтобы на сайте не отображалась «Общая рубрика» а в админке она присутствовала чтобы можно было добавлять туда посты?

Миша 12 Апр 2015
Добрый день! Это нужно создавать собственный виджет. При помощи get_categories() например.
Алексей 12 Апр 2015
в коде выше самописного виджета использовал

wp_list_categories('show_count=0&title_li=&hide_empty=0');

добавил туда параметр

wp_list_categories('show_count=0&title_li=&hide_empty=0&exclude=1');

все сработало
так ли необходимо делать через get_categories() ? будет ли это лучшем вариантом?
Миша 13 Апр 2015
Оба варианта хорошие.
Руслан 24 Мар 2015

Доброго времени суток! Подскажите, как удалить виджеты, которые использовались в предыдущей теме? Тема удалена и заменена другой, а виджеты остались висеть на сайте. В сайдбаре их нет.

Миша 25 Мар 2015

Доброго времени суток!
Возможно, если вы в сайдбар ничего не добавляли, у вас там висят стандартные виджеты.

Елена 23 Май 2015

Миша здравствуйте. Подскажите пожалуйста как можно убрать сайдбары с двух страниц, оставив их на других? У меня так и было, не знаю, что я такое сделала, но сейчас они появились на всех страницах. Есть возможность это сделать без кодирования и программирования? Я впервые делаю, вернее корректирую сайт, в функционале wordpress разобралась, но могу пользоваться только готовыми опциями и функциями.

Миша 24 Май 2015

Здравствуйте!
Если вы совсем не хотите залазить в код, то можете воспользовать плагинами по управлению сайдбарами (напрмиер custom sidebars).

Елена 24 Май 2015

Миша, спасибо за ответ. Не то, что бы я не хотела залазить в код, просто не умею.
Загрузила плагин, теперь вижу 2 кнопки Create a new sidebar и Import/Export sidebars. Получается мне нужно все сайдбары заново создать, чтобы ими управлять? или есть возможность старые удалять?

Миша 25 Май 2015

Дело в том, что я очень мало какими плагинами пользуюсь, поэтому точно вам подсказать не могу. Но если хотите, можете связаться со мной через вк или емайл и я вам спокойно всё сделаю через код.

Елена 26 Май 2015
Миша спасибо большое! обязательно свяжусь!
Елена 24 Май 2015
Там, где можно выбрать места для размещения, ставить галки, не получается, ничего не меняется
daria 29 Май 2015

Пытаюсь внедрить виджет paymaster для тест оплаты в Текст в виде html. Все просто исчезает и ничего нет.

Миша 29 Май 2015
То есть виджет просто не появляется? Или сайт исчезает весь?
alx dh 17 Июн 2015

Доброго дня.
Спасибо за статью.
Небольшое замечание по коду.
Вот в этом кусочке у вас тэг списка (ul) не закрыт:
$q = new WP_Query(«posts_per_page=$posts_per_page&orderby=comment_count»);
if( $q->have_posts() ):
?>have_posts() ): $q->the_post();
?> endif;
wp_reset_postdata();

Миша 17 Июн 2015
Добрый день!
Исправил, спасибо!
Евгений 4 Сен 2015

Здравствуйте!
Есть виджет, который выводит либо все статьи, либо из определенной категории.
Выглядит это так — http://www.picshare.ru/view/6717284/
Как сделать, что прописать, чтобы вместо выбора категорий, можно было выбирать «Post Type» (как вот здесь — http://www.picshare.ru/view/6717285/), т.к. использую Custom Post Types UI. Вот сам код виджета:

 /** * Displays latest or category wised posts in a 4 block layout. */ class awaken_four_block_posts extends WP_Widget { /* Register Widget with WordPress*/ function __construct() { parent::__construct( 'four_block_widget', // Base ID __( 'Awaken: Four Block Posts Widget', 'awaken' ), // Name array( 'description' => __( 'Displays posts by four blocks per row.', 'awaken' ), ) // Args ); } /** * Back-end widget form. * * @see WP_Widget::form() * * @param array $instance Previously saved values from database. */ public function form( $instance ) { //print_r($instance); $defaults = array( 'title' => __( 'Latest Posts', 'awaken' ), 'category' => '', 'number_posts' => 4, 'sticky_posts' => true, 'offset' => 0 ); $instance = wp_parse_args( (array) $instance, $defaults ); $number_posts = isset( $instance['number_posts'] ) ? absint( $instance['number_posts'] ) : 4; $offset = isset( $instance['offset'] ) ? absint( $instance['offset'] ) : 0; ?> 

echo $this->get_field_id( 'title' ); ?>" name=" echo $this->get_field_name( 'title' ); ?>" value=" echo esc_attr($instance['title']); ?>"/>

wp_dropdown_categories( array( 'name' => $this->get_field_name('category'), 'selected' => $instance['category'], 'show_option_all' => 'Show all posts' ) ); ?>

echo $this->get_field_id( 'number_posts' ); ?>" name=" echo $this->get_field_name( 'number_posts' );?>" value=" echo $number_posts; ?>" size="3"/>

echo $this->get_field_id( 'offset' ); ?>" name=" echo $this->get_field_name( 'offset' );?>" value=" echo $offset; ?>" size="3"/>

checked( $instance['sticky_posts'], true ) ?> style="color: #ebde68"> echo $this->get_field_id('sticky_posts'); ?>" name=" echo $this->get_field_name('sticky_posts'); ?>" />

} /** * Sanitize widget form values as they are saved. * * @see WP_Widget::update() * * @param array $new_instance Values just sent to be saved. * @param array $old_instance Previously saved values from database. * * @return array Updated safe values to be saved. */ public function update( $new_instance, $old_instance ) { $instance = $old_instance; $instance[ 'title' ] = strip_tags( $new_instance[ 'title' ] ); $instance[ 'category' ] = $new_instance[ 'category' ]; $instance[ 'number_posts' ] = (int)$new_instance[ 'number_posts' ]; $instance[ 'sticky_posts' ] = (bool)$new_instance[ 'sticky_posts' ]; $instance[ 'offset' ] = (int)$new_instance[ 'offset' ]; return $instance; } /** * Front-end display of widget. * * @see WP_Widget::widget() * * @param array $args Widget arguments. * @param array $instance Saved values from database. */ public function widget( $args, $instance ) { extract($args); $title = ( ! empty( $instance['title'] ) ) ? $instance['title'] : ''; $number_posts = ( ! empty( $instance['number_posts'] ) ) ? absint( $instance['number_posts'] ) : 4; $sticky_posts = ( isset( $instance['sticky_posts'] ) ) ? $instance['sticky_posts'] : false; $category = $instance['category']; $offset = ( ! empty( $instance['offset'] ) ) ? absint( $instance['offset'] ) : 0; // Latest Posts $latest_posts = new WP_Query( array( 'cat' => $category, 'posts_per_page' => $number_posts, 'post_status' => 'publish', 'orderby' => 'rand', 'ignore_sticky_posts' => $sticky_posts, 'offset' => $offset ) ); echo $before_widget; if ( ! empty( $title ) ) { echo $before_title . $title . $after_title; } ?>
$i = 1; ?> if ( $latest_posts -> have_posts() ) : while ( $latest_posts -> have_posts() ) : $latest_posts -> the_post(); ?>
if ( has_post_thumbnail() ) { ?> the_permalink(); ?>" title=" the_title(); ?>"> the_post_thumbnail( 'featured', array('title' => get_the_title()) ); ?> } else { ?> the_permalink(); ?>" rel="bookmark" title=" the_title(); ?>"> echo get_template_directory_uri(); ?>/images/thumbnail-default.jpg" alt=" the_title(); ?>" /> } ?> the_title( sprintf( '

', esc_url( get_permalink() ) ), '

'
); ?> if ( 'post' == get_post_type() ) : ?>
the_time('j.m.y'); ?> global $post; echo get_post_meta($post->ID, 'views', true); ?>
endif; ?>
if( $i%4 == 0 ) { echo '
} ?> $i++; ?> endwhile; ?> endif; ?>
echo $after_widget; } } // register awaken three block posts widget function register_awaken_four_block_posts() { register_widget( 'awaken_four_block_posts' ); } add_action( 'widgets_init', 'register_awaken_four_block_posts' );

Заранее спасибо!
Миша 5 Сен 2015
Здравствуйте!
В переменной $defaults указать параметр post_type , вот так:

$defaults = array( 'title' => __( 'Latest Posts', 'awaken' ), 'category' => '', 'number_posts' => 4, 'sticky_posts' => true, 'offset' => 0, 'post_type' => array('post', 'ваш_тип_поста') // вот он );

Евгений 5 Сен 2015

Почему-то не срабатывает. пробовал как у вас, и пробовал заменять ‘category’ => », на ‘post_type’ => array(‘post’, ‘ваш_тип_поста’).
В коде виджета по-моему далее идет построение самого виджета:

 

echo $this->get_field_id( 'title' ); ?>" name=" echo $this->get_field_name( 'title' ); ?>" value=" echo esc_attr($instance['title']); ?>"/>

wp_dropdown_categories( array( 'name' => $this->get_field_name('category'), 'selected' => $instance['category'], 'show_option_all' => 'Show all posts' ) ); ?>

echo $this->get_field_id( 'number_posts' ); ?>" name=" echo $this->get_field_name( 'number_posts' );?>" value=" echo $number_posts; ?>" size="3"/>

echo $this->get_field_id( 'offset' ); ?>" name=" echo $this->get_field_name( 'offset' );?>" value=" echo $offset; ?>" size="3"/>

checked( $instance['sticky_posts'], true ) ?> style="color: #ebde68"> echo $this->get_field_id('sticky_posts'); ?>" name=" echo $this->get_field_name('sticky_posts'); ?>" />

Мне кажется здесь нужно заменить на что-то другое вот этот кусок:

 

wp_dropdown_categories( array( 'name' => $this->get_field_name('category'), 'selected' => $instance['category'], 'show_option_all' => 'Show all posts' ) ); ?>

Евгений 5 Сен 2015
Да и дальше в коде куча настроек, в которые тоже думаю что-то надо вставить или заменить.
Евгений 5 Сен 2015

По-хорошему было-бы именно заменить ВЫБОР КАТЕГОРИЙ на ВЫБОР POST TYPE.
В коде довольно часто встречается ‘category’

Миша 6 Сен 2015

Вы бы хотели, чтобы виджет помимо записей выводил и другие типы?
Вопрос — тот тип поста, который вы хотите вывести, поддерживает категории?

Евгений 6 Сен 2015

По-простому говоря: нужно, чтобы этот виджет выводил например статьи из «type post: рецепты», а не из стандартных записей и категорий.
И да, тип поста «рецепты» — поддерживает категории.

campusboy 17 Сен 2015

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

Григорий 13 Ноя 2015

Добрый день! Подскажите, пожалуйста, как в файле robots.txt запретить индексацию страниц, созданных при помощи виджета «новости»?

Надежда 16 Ноя 2015

Добрый день! Такая проблема возникла — был правый сайдбар, и не стало его. В консоли WP он есть, и то что я на него поместила, тоже есть. Просматриваю код страницы, и там есть то, что я установила в правый сайдбар, вот только не видно на странице. Где я накосячила?? Сильно в php не понимаю, просто иногда редактирую как советуют. но копию обязательно перед редактированием сохраняю, вдруг что не так, можно восстановить. А тут вроде всё вернула, а сайдбар так и не показался.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *