Модератор
Юрій
(@yube)
Существует всего два пути: хак и API. Если со вторым «не сложилось», то Вы обречены после каждого апдейта хакаться с файлами. C’est la vie.
Хотя я, честно говоря, не понимаю, в чем проблема с плагинами? Есть дока Добавление административных меню, есть куча плагинов, которые это делают (т.е. есть где посмотреть в действии). Бери за основу и пиши своё.
да я начала писать плагин.. вывод в меню сделала уже.. сейчас пока разбираюсь как написать функцию чтобы тот файл который у меня работал и закачивался ручками в раздел админки — как то его на функцию переложить..
о! а это вы! мой прошлый спаситель! мы с вами недавно мою проблему решили с модреврайтом на ворпрессе .. приятно вас видеть снова)
проинклудила я этот файл в функцию, файл подтянулся, только теперь стандартаня функция вордпресса get_results() в файле не отрабатывается, ошибку дает.. да и сессии как стартануть не понятно.. не хочет теперь. Потому что сессии я вызывала выше чем контент
Если я убираю из файла include(‘./admin-header.php’); то тогда дает ошибку на функцию get_results() , а если оставляю, то выходит две шапки
Модератор
Юрій
(@yube)
Я вообще не понимаю, чего Вы хотите добиться? Только давайте без технических подробностей про инклюды, хорошо? В целом…
ок я попробую объяснить.. у меня есть доп. таблица в базе, мне нужно чтобы данные этой таблицы выводились на доп. строке меню в админке, чтобы можно было редактировать их.
Раньше я совала руками ссылку на тот файл в файл menu.php в разделе админки и совала просто файл, который делала на освнове других файлов там лежащих и он работал. Ну в нем все было — вывод, реактирование из это таблицы.
Сейчас я нашла как сделать плагин, который бы дополнял этой ссылкой меню, сделала.. назначила ему функцию funcresult, дописала в нем функцию эту и в нее просто затолкала тот файл, который переложила из раздела админки в папку плагина. Видимо это неправильно да..
я перенесла сейчас весь текст файла в функцию, начинается так function funcresult() {
и он ругается на стандартные функции get_results() вордпресса.. я думаю что в скобках наверное надо что то указать да.. funcresult(блабла) функция не видит видимо что то
Модератор
Юрій
(@yube)
Да возьмите любой плагин, который добавляет что-то в админку, и посмотрите, как он устроен. У меня такое впечатление, что Вы пытаетесь почесать левое ухо левой рукой, но через голову.
а вы не могли бы посоветовать какой плагин посмотреть.. я просто на ворпрессах так то сайты не делаю.. но клиентка одна часто просит перекочевряжить ее сайты, и получается что я в плагинах то не разбираюсь, что есть — она ставит сама.
Модератор
Юрій
(@yube)
Любой смотрите. Хотя бы классику — rus-to-lat. В нем есть и добавление пункта меню, и своя страница настроек, и плагин не большой, заблудиться в нем трудно.
ок.. пошла копаться, спасибо)
ура! кое что есть! нашла, что если мы обращаемся к базе в функции плагина то надо сначала прописать строку
global $wpsig_sig_table, $wpdb;
осталось теперь выяснить как сессии запихать туда и дело сделано!
Ну все я сделала!
Итак чтобы написать плагин для ворпресса, который будет работать с mysql-ными запросами в админке и поддерживать вызов сессий тонкости такие:
Ну там создаем папочку для плагина, делаем там файлик .php в нем пишем
add_action(‘admin_menu’, ‘функция1’);
function функция1() {
session_start();
add_menu_page(‘титл_страницы’, ‘сама_ссылка_в_меню_админа’, 10, «файл_где_находится_функция2», ‘имя_функции2’);
}
Вот вызов сессии надо делать именно в функции1, а не в функции2
Подозреваю что если писать второй плагин такой же, то уже вызов сессии делать не придется
Дальше пишем функцию2 ниже
function функция2() {
global $wpsig_sig_table, $wpdb; //для отработки запросов mysql
и ниже пошли запросы к мускулу и т.п.
}
Модератор
Юрій
(@yube)
Вот видите, всё не так страшно, как может показаться 🙂
Подозреваю что если писать второй плагин такой же, то уже вызов сессии делать не придется
Оно-то так, но тогда получится, что второй плагин зависит от первого, что, в общем случае, не совсем хорошо. Правильнее сделать в обоих что-то типа
if (session_id() == '') session_start();
И еще тонкости, о которых многие — причем, не только начинающие — напрочь забывают.
1. Если админка плагина принимает какие-либо данные от пользователя, то обязательно нужно проверить его права.
2. Чтобы обезопаситься от XSS/CSRF атак, нужно использовать механизмы проверки, например check_admin_referer().