Поддержка Плагины Плагин который будет создавать файл и шарить по заданному URL

  • Добрый день всем пользователям.

    Пишу первый плагин.
    Смысл в том что бы в рамках плагина создавать файл и хранить его в папке плагина (если это правильное место).
    А по запросу URL(определенному) отдавать этот файл.

    Подскажите: как через функции WP на PHP зарегистрировать файл на определенный URL?

    p.s. Заранее большое спасибо за ответы и помощь в целом.

    • Тема изменена 4 года, 9 месяцев назад пользователем rofl113.
Просмотр 15 ответов — с 1 по 15 (всего 18)
  • Модератор Yui

    (@fierevere)

    永子

    создавать файл и хранить его в папке плагина (если это правильное место)

    это неправильное место, правильнее создавать файлы только внутри папки /wp-content (и подпапках внутри нее)

    не совсем понятно что вы собираетесь сделать с файлом,
    но возможно вам нужна ф-ция add_rewrite_rule() чтобы добавить более красивый url для файла.

    Home


    https://wp-kama.ru/function/add_rewrite_rule

    Я планирую сделать небольшой плагин который бы по ссылке отдавал xml для Авито.
    Собрать данные из базы данных и составить xml я уже научился.
    Осталась понять:
    1) Как сохраненный файл «зарегистрировать» в WP по определенному URL.
    2) Как обновлять файл (допустим каждый день). Тут вроде проще — надо копать в сторону Cron.

    «правильнее создавать файлы только внутри папки /wp-content (и подпапках внутри нее)» (с)
    Я там и планировал, а точнее в папке плагина, которая находится в папке по адресу: «wp-content/plugins/{name-plugin}»
    Или это не совсем правильно место? Я думал создать там папку «share» и хранить файл там.

    • Ответ изменён 4 года, 9 месяцев назад пользователем rofl113.
    Модератор Yuri

    (@yube)

    Лучше /wp-content/share/ мне кажется.

    И ничего регистрировать не нужно, просто по хрону сохранять этот файл банальной PHPшной функцией file_put_contents.

    Модератор Yui

    (@fierevere)

    永子

    в папках тем или плагинов лучше никаких динамических файлов не создавать, это создает проблемы при обновлениях,
    если плагин будет обновляться, то файл будет удален, что вызовет проблемы.

    Если время генерации XML небольшое, то можно вообще файл не создавать а динамически генерировать и отдавать вывод при запросе.

    Home


    https://wp-kama.ru/function/add_rewrite_endpoint

    Большое спасибо Вам: Yui и Юрий.
    Пойду пробовать.

    Не смог разобраться с функцией add_rewrite_endpoint. Подскажите пожалуйста где можно почитать информацию подробнее по ее применению?

    Идея такова, что бы по запросу страницы: сайт/upload/avito.xml — генерировать файл и отдавать его.

    Кстати нашел функцию register_rest_route она может мне помочь? или это не совсем про это?

    Модератор Yuri

    (@yube)

    Не смог разобраться с функцией add_rewrite_endpoint. Подскажите пожалуйста где можно почитать информацию подробнее по ее применению?

    У Тимура (wp-kama.ru)

    Идея такова, что бы по запросу страницы: сайт/upload/avito.xml — генерировать файл и отдавать его.

    А по-простому — не? Вот зачем еще /upload/ в пути?
    Простой путь:

    add_action('init', function() {
      if ( $_SERVER['REQUEST_URI'] != '/avito.xml' ) return;
    // генерируем и отдаем XML
      exit;
    });
    

    Кстати нашел функцию register_rest_route она может мне помочь? или это не совсем про это?

    Это про REST.

    А по-простому — не? Вот зачем еще /upload/ в пути?
    Простой путь:

    Я только за. «Простой путь» — очень интересно, но не понятно куда записывать данные (в виде string) и как их передавать.

    У Тимура (wp-kama.ru)

    Я читал, но там какие то подзаголовки и редиректы. А именно вариант для одного файла нет.

    Странно что такой задачи (динамическая страница/данные) нет в поисковике. Или может я не правильно гуглю?

    Модератор Yuri

    (@yube)

    но не понятно куда записывать данные (в виде string) и как их передавать.

    Записывать в переменную, передавать в буфер вывода (в поток). Всё как обычно.

    $xml = '<xml></xml>';
    die($xml);
    

    Спасибо Вам большое, все заработало!
    Но только через основной файл functions.php активной темы.
    А я сначала пробовал через functions.php моего плагина.
    Видимо так нельзя делать? или тогда надо еще дописывать в середине имя плагина?

    А можно сделать что бы он как скачиваемый файл был а не как страница?

    Модератор Yuri

    (@yube)

    Но только через основной файл functions.php активной темы.
    А я сначала пробовал через functions.php моего плагина.

    functions.php темы выполняется автоматически, ежели присутсвует в теме. У плагина выполняется тот скрипт, который был активирован. Остальные скрипты плагинна должны быть явно подключены. Если Вы просто кинули в папку плагина файл functions.php, то единственное, что он будет делать — это занимать место.

    А можно сделать что бы он как скачиваемый файл был а не как страница?

    Да. Для этого существуют http-заголовки content-type, content-disposition и т.д.

    Если для бота, которому Вы готовите инфу, это принципиально, нужно сделать в точности так, как рекомендует хозяин бота.

    functions.php темы выполняется автоматически, ежели присутсвует в теме. У плагина выполняется тот скрипт, который был активирован. Остальные скрипты плагинна должны быть явно подключены. Если Вы просто кинули в папку плагина файл functions.php, то единственное, что он будет делать — это занимать место.

    Я так и сделал, у меня появилась закладка в админке и я там смог вывести страничку с данными.
    У меня есть в плагине всего 3 файла:
    основной файл плагина, затем файл functions и файл page-general. и я думал что все функции внутри functuins будут вызваны без проблем =((

    Да. Для этого существуют http-заголовки content-type, content-disposition и т.д.

    Спасибо, погуглю как это использовать

    Я так понял надо на каждый вопрос создавать тему.
    Извиняюсь что задавал много вопросов за раз.
    Пойду создаем еще одну.

    Модератор Yuri

    (@yube)

    В данном случае не надо. Вопрос довольно специфический, вряд ли кто-то будет искать фрагменты от него, да и по фрагменту будет трудно понять, о чем вообще речь.

Просмотр 15 ответов — с 1 по 15 (всего 18)
  • Тема «Плагин который будет создавать файл и шарить по заданному URL» закрыта для новых ответов.