Форум программистов, компьютерный форум, киберфорум
WordPress
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
 Аватар для Зверушь
461 / 369 / 94
Регистрация: 01.05.2010
Сообщений: 1,761

Плагин как виджет

04.09.2013, 10:01. Показов 1515. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Подскажите пожалуйста в какую сторону копать. Как оформить свой плагин как виджет?
Вот допустим я написал плагин (по сути просто функцию и вызов этой функции), которая печатает случайную цитату из списка в файле.
Я хочу, чтобы пользователи моего плагина в админке могли зайти в раздел виджеты, и перетянуть оттуда на свой сайдбар мой плагин. Как такое сделать?

Добавлено через 19 часов 54 минуты
Что-то обычно вопросы по программированию для wp обычно остаются без ответов. Очень жаль, что тут так мало разработчиков под wp, очень многое не понятно.
Ну что ж, пролью свет на заданный мной в этой теме вопрос. Таки нагуглил

Вот две важные функции, которые нужны для создания виджета:
PHP
1
2
register_sidebar_widget('Название виджета', 'функция вывода виджета');
register_widget_control('Название виджета', 'функция вывода настроек в админке');
Первая функция (register_sidebar_widget()) создает виджет с названием 'Название виджета' и вызывает функцию указанную во втором аргументе. Эта функция во втором аргументе занимается выводом виджета в шаблоне. Простейший ее вариант, например таков:
PHP
1
2
3
4
5
6
7
8
function z_cite_widget($args) {
    echo $args['before_widget'];
    echo $args['before_title'];
    echo "Название";
    echo $args['after_title'];
    z_cite(); //Можем вызвать любую свою функцию, которая что-то отобразит
    echo $args['after_widget'];
}
Вторая функция: register_widget_control - занимается выводом формы настроек в меню "виджеты" в админке. Без этой функции виджет можно будет просто перетянуть на сайдбар, без настроек. Тут еще нужно позаботится о том, чтобы эти настройки где-то сохранялись, например в БД.

Тут у меня возникли вопросы:
1. Как различать экземпляры виджетов? Вот допустим настройки моего виджета хранятся в таблице в БД. А я взял и на свой сайдбар перетянул ажно пять одинаковых виджетов. Как их различать? Как на каждый экземпляр создавать свою таблицу настроек? А то сейчас получается, что все экземпляры используют одну таблицу настроек, что не хорошо. Из этого вытекает второй вопрос.
2. Как при снятии виджета с сайдбара удалять таблицу настроек? Да и вообще как при удалении самого плагина удалить созданную им таблицу из БД?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.09.2013, 10:01
Ответы с готовыми решениями:

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

Как вывести виджет
как можно вывести виджет?

Как вставить php в виджет
Здравствуйте. Есть такой стандартный виджет - текст называется. Туда можно вставить как простой текст, так и html. Мне же нужно как-то...

4
Coding is art
Эксперт JS
540 / 423 / 154
Регистрация: 04.09.2013
Сообщений: 1,066
04.09.2013, 12:11
Если честно до этого не видел функции для создания виджетов.
Виджет можно создать расширяя класс WP_Widget.
Пример вот тут: http://codex.wordpress.org/Widgets_API правда на инглише, но код я думаю это никак не испортит.
Суть в этом расширении в том, что мы создаём обалочку, которая выводиться после перетаскивания в боковую панель твоего виджета, оболочку которая отображается на фронт-энде и сохранение значений при клике "сохранить" в виджетах. Всё легко и просто. В оболочке вывода на фронт-энде можно какие угодно функции ВП использовать. Соединение с БД, поймать title нынешней страницы и т.п. (собственно и в настройках тоже самое можно делать)

Я думаю если ты с этим разберёшься, то поймёшь, что виджет сам автоматически может сохранять какие-то настройки и удалять их и БД (после удаления виджета) и другие вопросы отпадут.
0
 Аватар для Зверушь
461 / 369 / 94
Регистрация: 01.05.2010
Сообщений: 1,761
04.09.2013, 17:40  [ТС]
Спасибо большое. Буду разбираться.
0
 Аватар для Зверушь
461 / 369 / 94
Регистрация: 01.05.2010
Сообщений: 1,761
05.09.2013, 14:32  [ТС]
Нусс, вроде как разобрался. Еще раз спасибо за ссылку!
Вот мой первый виджет для wp: выводит случайную цитату из списка цитат в текстовом файле.
После установки и активации плагина в административном меню "Виджеты" создается виджет "Случайные цитаты", имеющий три настройки:
1. Название - тут думаю все понятно;
2. Путь к файлу - путь к файлу с цитатами. В качестве пути может быть url.
3. Разделитель между цитатами - Строка, которая используется в файле с цитатами для того, чтобы отделить одну цитату от другой.
Вложения
Тип файла: zip z_cite 0.2.zip (2.5 Кб, 11 просмотров)
0
 Аватар для Зверушь
461 / 369 / 94
Регистрация: 01.05.2010
Сообщений: 1,761
11.09.2013, 17:48  [ТС]
Хотелось бы знать как можно создать страницу настроек плагина в административном меню...

Добавлено через 1 час 28 минут
Разобрался.
Вот код плагина, который создает в опциях страницу настройки плагина. Там можно ввести строку, которая будет добавлятся к контенту.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
add_action('admin_menu', 'Test_Plugin::test_plugin_menu'); //Цепляем меню
add_filter('the_content', 'Test_Plugin::add_string', 10, 1);
 
class Test_Plugin {
    public function test_plugin_menu() {
        //Цепляем страницу, генерируемую методом test_plugin_options для меню
        add_options_page('Test Plugin Options', 'Test Plugin', 8, __FILE__, 'Test_Plugin::test_plugin_options');
    }
    
    public function test_plugin_options() {
        //Рисуем страницу настроек
        ?>
        <div class="wrap">
            <h2>Настройки этого тестового плагина</h2>
            <?php
            //Так обновляются настройки
            if ($_POST['str']) {
                echo '<p>Обновлено</p>';
                update_option('str', $_POST['str']);
            }
            
            //Так настройки получаются
            $str = get_option('str');
            ?>
            <form method="POST">
                <label for="str">Строка пользователя:</label>
                <input type="text" id="str" name="str" value="<?=$str?>" />
                <input type="submit" value="OK" />
            </form>
        </div>
        <?php
    }
    
    public function add_string($content) {
        $str = get_option('str'); //Можем получить эту настройку из любого места программы
        $content .= $str;
        return $content;
    }
}
?>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.09.2013, 17:48
Помогаю со студенческими работами здесь

Как создать виджет-фильтр
Подскажите пожалуйста как создать виджет-фильтр?Мне нужно создать просто виджет, который при вставке на фронте должен отобразить блок...

Как разместить виджет в админке
Привет. Задался вопросом разместить виджет Яндекс-переводчика в админке Wordpress. Есть код виджета, который вешается на...

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

Как добавить тег в виджет меню?
&lt;?php if(!function_exists('dynamic_sidebar') || !dynamic_sidebar('General Sidebar')) : ?&gt; &lt;p&gt;не подключены виджеты&lt;/p&gt; ...

Как добавить виджет через API?
Подскажите, как добавить виджет через API, сайт который предоставляет виджет даёт код и ключ, но что с ними делать не знаю т.к. никогда не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru