• У меня есть задачи по установки в админскую часть дополнительных ссылок в меню и страницы на них. Страницы я создаю — все отлично, но когда я пишу ссылки на эти страницы в файл admin/menu.php плюс еще доп. стили вставляю в файлы стилей админки, — вобщем оно все есть до тех пор пока не поставится в вордпресс новый плагин или какие то изменения, которые перезаписывают файл меню админки. и Все мои труды снова пропадают. Пишу примерно такое

    $menu[100] = array( __(‘Form Results’), ‘edit_users’, ‘formmoving.php’, », ‘menu-top’, ‘menu-moving’, ‘div’ );

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

Просмотр 15 ответов — с 1 по 15 (всего 16)
  • Модератор Юрій

    (@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().

Просмотр 15 ответов — с 1 по 15 (всего 16)
  • Тема «Когда я пишу руками в wp-admin/menu.php — оно потом пропадает. К» закрыта для новых ответов.