Как создать API для своего плагина?

Я разрабатывал плагины для WordPress, большинство плагинов, которые я разработал, используют два или три класса, следовательно, не такие большие, как Buddypress или WooCommerce.

Я планирую разработать два плагина с открытым исходным кодом для предоставления какой-то сложной системы (не могу делиться деталями в данный момент, но позже во время разработки), где другие разработчики могут настраивать функции, а система для них должна быть такой же, как Buddypress и WooCommerce. ,

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

Я знаю, что трудно дать определенный ответ, но мне нужно какое-то руководство для начинающих, чтобы я мог идти в правильном направлении. Нужно ли регистрировать свои собственные действия и фильтры? Если да, то как? если нет то какие у меня варианты?

Ваш совет мне очень поможет … Спасибо

Понравился вопрос? Нужен ответ? Поддержите проект
WPAsk
Ответов: 2
  1. fuxia

    API, который вы предлагаете в плагине или теме, зависит от логики этого конкретного кода. Вероятно, нет руководства, которое применимо ко всем ситуациям.

    Я участвую в разработке нескольких плагинов с API, и то, что я узнал до сих пор:

    Не предлагайте API, пока вы действительно не узнаете, как люди используют ваш код.

    Выпустите первые две или три версии без какого-либо API. Никаких пользовательских действий или фильтров, никаких открытых методов или функций (и никогда никаких глобальных переменных), если это возможно. Дождитесь запросов от ваших пользователей, но не добавляйте код, пока не узнаете, что ваша внутренняя структура кода будет работать в долгосрочной перспективе.

    Поддерживать обратную совместимость API сложно. Это может предотвратить необходимые улучшения в других местах. Подумайте обо всех глобальных переменных, которые WordPress не может удалить в настоящее время. Это плохой API, и мы застряли с ним на протяжении многих лет, потому что люди уже используют его.

    Подумайте об отделении вашего API от остальной части кода (идея приведена в предыдущей ссылке).
    Ваш API должен быть полезен не только сторонним разработчикам, но и вам. Не добавляйте ограничения для себя, если это не нужно.

    Если вы предлагаете пользовательские хуки, используйте их в своем коде. Это даст другим разработчикам полезные примеры, и вы скоро увидите возможные недостатки.
    Если бы ядро ​​WordPress использовало внутренне так называемый API настроек, у нас сегодня не было бы этого беспорядка. Может быть.

    Используйте хорошие части основного API WordPress в своем плагине. Избегайте анонимных объектов, констант, глобальных переменных и любого непредсказуемого кода.

    Убедитесь, что вы используете последовательную схему именования (а не такой беспорядок), и поместите все в свое собственное пространство имен.

    Сначала напишите документацию. Выпустите новый (часть) API позже.
    Создавайте полезные примеры для всего. Вы будете удивлены, увидев, сколько дыр и избыточностей вы найдете.

    Предложите специальные инструменты для отладки вашего API, когда все работает не так, как должно (включая не минимизированные скрипты и таблицы стилей). Я написал пример для отладки AJAX, просто чтобы показать, насколько креативным вы можете быть здесь. Опять же, эти инструменты должны быть объяснены в вашей документации перед их выпуском.

    Альтернативой парадигме обратного вызова WordPress может быть шаблон Observer. Это повысит барьер для сторонних разработчиков, но может привести к улучшению кода с обеих сторон.

    1. pixelngrain

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

Добавить ответ

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: