- Добавление PHP-кода в виджеты WordPress без использования плагинов
- Миша
- Как добавить поддержку виджетов в тему WordPress в 3 шага
- Шаг 1: Создаем functions.php
- ', 'after_title' => '
- Шаг 2: Добавляем виджеты в динамический сайдбар
- Шаг 3: Добавляем динамический сайдбар в шаблон
- ', 'after_title' => '
- WordPress widget functions php
- This is a text widget
- Developing Widgets
- Your Widget Class
- Registering a Widget
- Examples
- Example Text Widget
- Sample Widget
- Example with a Namespace
- Special considerations
- WordPress widget functions php
- Почему WordPress лучше чем Joomla ?
- Про шаблоны WordPress
- Самые первые настройки после установки движка WordPress
- 10 стратегий эффективного продвижения статей в блогах на WordPress
- Топ WordPress альтернатив для создания персонального сайта
- В поисках профессионального рабочего окружения для WordPress
- Работа с WordPress CLI
Добавление PHP-кода в виджеты WordPress без использования плагинов
По умолчанию виджеты поддерживают только обычный текст и HTML-код. Но люди очень часто сталкиваются с необходимостью вставки в виджет кода PHP, например при установки Sape.
Конечно, есть уйма плагинов, позволяющих это реализовать, но мы, как обычно, воздержимся от их использования и всё, что потребуется — это вставить следующий код в functions.php текущей темы:
function php_in_widgets($widget_content) { if (strpos($widget_content, ' . '?') !== false) { ob_start(); eval('?' . '>' . $widget_content); $widget_content = ob_get_contents(); ob_end_clean(); } return $widget_content; } add_filter('widget_text', 'php_in_widgets', 99);
Та-дам, теперь можете добавлять PHP-код в текстовые виджеты. И никаких плагинов.
Миша
Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.
Пишите, если нужна помощь с сайтом или разработка с нуля.
Как добавить поддержку виджетов в тему WordPress в 3 шага
Виджеты в WordPress — отличный способ кастомизировать свой блог. Некоторые пользователи задаются вопросом, как добавить поддержку виджетов в свою тему, которая их не поддерживает из коробки. В сегодняшней статье мы расскажем именно об этом.
Нужно знать, что виджеты стали частью ядра WordPress начиная с версии 2.2, и с тех самых пор нет необходимости устанавливать какие-либо плагины для того, чтобы добавить виджеты в свой блог.
Шаг 1: Создаем functions.php
В нашем примере такой файл в теме отсутствовал, поэтому мы просто создали новый functions.php и загрузили его в папку темы через FTP. Вот такой код был помещен в файл:
Он сработает, если только вы используете разметку по-умолчанию от WordPress с h2 в заголовках сайдбаров и ненумерованные списки:
Настраиваем functions.php
Если же нам не подходит разметка по-умолчанию от wordpress, то для SEO необходимо использовать h4 для заголовков виджетов и не применять немаркированные списки ul или li. Поэтому вместо вышеприведенного кода мы изменили код следующим образом для того, чтобы задать свою собственную разметку:
'', 'after_widget' => '', 'before_title' => '', 'after_title' => '
', )); ?>
Код выше говорит сам за себя. before_widget и after_widget — здесь нам не нужен собственный код, поэтому оставляем значения пустыми. before_title и after_title мы использовали для h4. Такая модификация переназначит дефолтную разметку и теперь будет поддерживать наш собственный шаблон вывода. Можете изменять этот код для того, чтобы стилизировать элементы под дизайн своего сайта с помощью CSS.
Шаг 2: Добавляем виджеты в динамический сайдбар
Этот код в functions.php поможет вам добавить области виджетов в свою тему и активирует возможность добавления динамического сайдбара. Теперь переходим в админку WordPress, а затем в меню Виджеты.
В разделе доступных виджетов вы сможете выбрать нужные вам из списка (Облако тегов, Свежие зхаписи, Свежие комментарии, Календарь, Архивы, Рубрики, Поиск и т.п).
Не забывайте сохранять изменения после добавления виджета. Добавлять их можно сколько угодно. При клике на виджет раскроются доступные для него опции, с помощью которых вы сможете модифицировать его внешний вид.
Шаг 3: Добавляем динамический сайдбар в шаблон
Теперь вам потребуется добавить php код в сайдбар для того, чтобы активировать динамический сайдбар, который будет отображать добавленные в админке виджеты. Вставьте этот код в нужное место в файле sidebar.php:
Сохраните изменения и новый сайдбар выведет ваши виджеты.
В свежих же версиях WordPress уже включены сайдбары на уровне ядра. Поэтому здесь вам потребуется только вызвать динамические сайдбары.
В файл functions.php нужно будет добавить следующий код:
function devise_widgets_init() < register_sidebar(array( 'name' =>__( 'Сайдбар 1', 'devise' ), 'id' => 'sidebar-1', 'before_widget' => '', 'after_widget' => '', 'before_title' => '', 'after_title' => '
', )); > add_action( 'init', 'devise_widgets_init' );
А в sidebar.php добавляем его вызов:
По всем вопросам и отзывам просьба писать в комментарии ниже.
Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.
WordPress widget functions php
HTML output for this widget looks like this:
', ); public function widget( $args, $instance ) < echo $args['before_widget']; if ( ! empty( $instance['title'] ) ) < echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ) . $args['after_title']; >echo 'This is a text widget
I can put HTML in here. Search me!Each widget has its own way of outputting HTML that is relevant to the data being displayed. The wrapper tags for the widget are defined by the widget area in which it is being displayed.
The PHP code necessary to create a widget like the built-in text widget looks like this:
); > public $args = array( 'before_title' => '
', 'after_title' => '
', 'before_widget' => '', 'after_widget' => ''; echo esc_html__( $instance['text'], 'text_domain' ); echo ''; echo $args['after_widget']; > public function form( $instance ) < $title = ! empty( $instance['title'] ) ? $instance['title'] : esc_html__( '', 'text_domain' ); $text = ! empty( $instance['text'] ) ? $instance['text'] : esc_html__( '', 'text_domain' ); ?>get_field_id( 'title' ) ); ?>"> get_field_name( 'title' ) ); ?>" type="text" value="">
get_field_id( 'Text' ) ); ?>"> get_field_name( 'text' ) ); ?>" type="text" cols="30" rows="10">
public function update( $new_instance, $old_instance ) < $instance = array(); $instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : ''; $instance['text'] = ( ! empty( $new_instance['text'] ) ) ? $new_instance['text'] : ''; return $instance; >> $my_widget = new My_Widget();The code above will be explained in detail later in the article.
Developing Widgets
To create and display a widget, you need to do the following:
- Create your widget’s class by extending the standard WP_Widget class and some of its functions.
- Register your widget so that it’s made available in the Widgets screen.
- Make sure that your theme has at least one widget area in which to add the widgets.
Your Widget Class
public function widget( $args, $instance ) < // outputs the content of the widget >public function form( $instance ) < // outputs the options form in the admin >public function update( $new_instance, $old_instance ) < // processes widget options to be saved >>
The documentation for each of these functions can be found in the widget class code:
- construct : Set up your widget with a description, name, and display width in your admin.
- widget : Process the widget options and display the HTML on your page. The $args parameter provides the HTML you can use to display the widget title class and widget content class.
- form : Display the form that will be used to set the options for your widget. If your widget doesn’t have any options, you can skip this function (although it is still best practice to include it even if it’s empty).
- update : Save the widget options to the database. If your widget doesn’t have any options, you can skip this function (although it is still best practice to include it even if it’s empty).
Registering a Widget
The register_widget() function is used to register a widget.
Call this function using the widgets_init hook:
Examples
Example Text Widget
To build the text widget from the example at the beginning of this article. You will start by setting up a widget class that extends the WP_Widget class.
In the class constructor you will call the parent constructor and pass it your widget’s base ID and name. Also in the class constructor you will hook into the widgets_init action to register your widget.
Next you will declare the arguments you will use when creating your widget. There are four arguments you must define, before_title , after_title , before_widget , and after_widget . These arguments will define the code that wraps your widgets title and the widget itself.
After defining your arguments, you will define the widgets function. This function takes two parameters, the $args array from before, and the $instance of the widget, and is the function that will process options from the form and display the HTML for the widget on the front-end of your site. In the example above the widget function simply outputs the widget title, while passing it through the widget_title filter. It then out puts a simple widget wrapper and the content of the widget’s text field. As outlined in the example, you can access the options from the widget that are stored in the $instance .
Next you will define the form function. This function takes one parameter, $instance , and outputs the form that the user uses to create the widget in the Widgets admin screen. In the example above, the function starts by defining the $title and $text variables and setting them to the previously entered values, if those values exist. Then it outputs a simple form with a text field for the title and a textarea for the text content.
Lastly you will define the update function. This function takes two parameters, $new_instance and $old_instance , and is responsible for updating your widgets with new options when they are submitted. Here you simply define $instance as an empty array. You then set the title and text keys to the $new_instance values if they exist. You then return $instance .
Finally, when all of the above is defined, you instantiate your new widget class and test your work.
Sample Widget
__( 'A Foo Widget', 'text_domain' ) ) // Args ); > /** * 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 = apply_filters( 'widget_title', $instance['title'] ); echo $before_widget; if ( ! empty( $title ) ) < echo $before_title . $title . $after_title; >echo __( 'Hello, World!', 'text_domain' ); echo $after_widget; > /** * Back-end widget form. * * @see WP_Widget::form() * * @param array $instance Previously saved values from database. */ public function form( $instance ) < if ( isset( $instance['title'] ) ) < $title = $instance['title']; >else < $title = __( 'New title', 'text_domain' ); >?>
get_field_name( 'title' ); ?>"> get_field_name( 'title' ); ?>" type="text" value="" />
/** * 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 = array(); $instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : ''; return $instance; >> // class Foo_WidgetThis sample widget can then be registered in the widgets_init hook:
Example with a Namespace
If you use PHP 5.3 with namespaces you should call the constructor directly as in the following example:
and call the register widget with:
Special considerations
If you want to use a widget inside another template file, rather than in a sidebar, you can use the_widget() to display it programmatically. The function accepts widget class names. You pass the widget class name to the function like this:
You may want to use this approach if you need to use a widget in a specific area on a page, such as displaying a list of events next to a form in a section on the front page of your site or displaying an email capture form on a mega-menu alongside your navigation.
WordPress widget functions php
Частная коллекция качественных материалов для тех, кто делает сайты
- Creativo.one2000+ уроков по фотошопу
- Фото-монстр300+ уроков для фотографов
- Видео-смайл200+ уроков по видеообработке
- Жизнь в стиле «Кайдзен» Техники и приемы для гармоничной и сбалансированной жизни
В этой рубрике Вы найдете бесплатные уроки по WordPress, которые позволят Вам усовершенствовать свой блог.
Почему WordPress лучше чем Joomla ?
Этот урок скорее всего будет психологическим, т.к. многие люди работают с WordPress и одновременно с Joomla, но не могут решится каким CMS пользоваться.
Создан: 26 Августа 2017 Просмотров: 28585 Комментариев: 0
Про шаблоны WordPress
После установки и настройки движка нам нужно поработать с дизайном нашего сайта. Это довольно долгая тема, но мы постараемся рассказать всё кратко и ясно.
Создан: 3 Августа 2017 Просмотров: 26538 Комментариев: 0
Самые первые настройки после установки движка WordPress
Сегодня мы вам расскажем какие первые настройки нужно сделать после установки движка WordPress. Этот урок будет очень полезен для новичков.
10 стратегий эффективного продвижения статей в блогах на WordPress
Продвижение статей в блоге — непростая задача. Часто бывает, что вы пишете действительно хороший контент, включаете визуальные эффекты, делаете правильные корректировки SEO, но это не дает ожидаемого результата.
Топ WordPress альтернатив для создания персонального сайта
В поисках профессионального рабочего окружения для WordPress
За время работы проекта мы не раз рассказывали о настройках рабочего окружения для движка WordPress. WAMP для Windows, MAMP для Mac или XAMPP для обеих операционных систем. Сегодня мы бы хотели поговорить о минусах перечисленных инструментов, а также пролить свет на новые решения.
Работа с WordPress CLI
Данное руководство будет полезно как администраторам, так и обычным пользователям. В WordPress появился консольный инструмент, который поможет сэкономить кучу времени!