Начало статьи читайте по ссылке Создаем виджет для соц.сетей в WordPress самостоятельно. Эпизод 1
Когда же значения будут введены в поля форм, их необходимо сохранить в базу данных. Метод update() «очищает» значения форм, убирая ненужные данные и сохраняет значения в базу данных.
public function update($new_instance, $old_instance) { $instance = array(); $instance['title'] = (!empty($new_instance['title']) ) ? strip_tags($new_instance['title']) : ''; $instance['facebook'] = (!empty($new_instance['facebook']) ) ? strip_tags($new_instance['facebook']) : ''; $instance['twitter'] = (!empty($new_instance['twitter']) ) ? strip_tags($new_instance['twitter']) : ''; $instance['google'] = (!empty($new_instance['google']) ) ? strip_tags($new_instance['google']) : ''; $instance['linkedin'] = (!empty($new_instance['linkedin']) ) ? strip_tags($new_instance['linkedin']) : ''; return $instance; }
Итак, мы уже создали настройки виджета, которые содержат ссылки на определенные профили в социальных сетях, а также добавили возможность сохранять эти настройки в базу данных.
Далее последует функция widget(), которая будет выводить ссылки на профили в социальных сетях на фронт-энде WordPress.
public function widget($args, $instance) { $title = apply_filters('widget_title', $instance['title']); $facebook = $instance['facebook']; $twitter = $instance['twitter']; $google = $instance['google']; $linkedin = $instance['linkedin']; // ссылки на соц.профили $facebook_profile = '<a class="facebook" href="' . $facebook . '"><i class="fa fa-facebook"></i></a>'; $twitter_profile = '<a class="twitter" href="' . $twitter . '"><i class="fa fa-twitter"></i></a>'; $google_profile = '<a class="google" href="' . $google . '"><i class="fa fa-google-plus"></i></a>'; $linkedin_profile = '<a class="linkedin" href="' . $linkedin . '"><i class="fa fa-linkedin"></i></a>'; echo $args['before_widget']; if (!empty($title)) { echo $args['before_title'] . $title . $args['after_title']; } echo '<div class="social-icons">'; echo (!empty($facebook) ) ? $facebook_profile : null; echo (!empty($twitter) ) ? $twitter_profile : null; echo (!empty($google) ) ? $google_profile : null; echo (!empty($linkedin) ) ? $linkedin_profile : null; echo '</div>'; echo $args['after_widget']; }
Вот что делает этот код. Ссылки на профили Facebook, Twitter, Google+ и LinkedIn сохраняются в базе данных через форму настроек виджета, извлекаются и сохраняются в соответствующие переменные PHP. Ссылка HTML на профиль социальной сети с соответствующими им иконками font awesome в качестве анкорных изображений следом сохраняются в переменную для последующего использования.
И, наконец, ссылки на профили в социальных сетях выводятся только в том случае, если профиль задан в настройках виджета. Это сделано для того, чтобы профиль соц.сети без указанной ссылки не выводился на сайте.
Класс виджета Designmodo_Social_Profile зарегистрирован с помощью хука widgets_init, чтобы WordPress его распознал.
// регистрация виджета Designmodo_Social_Profile function register_designmodo_social_profile() { register_widget('Designmodo_Social_Profile'); } add_action('widgets_init', 'register_designmodo_social_profile');
Продолжение статьи читайте по ссылке Создаем виджет для соц.сетей в WordPress самостоятельно. Эпизод 3