Intereting Posts
Добавление класса current_post_item к текущему сообщению в цикле Фильтр WordPress Search Only для страницы с ребенком ребенка ребенка ребенка Ошибка 403 на странице входа администратора Запросить страницы и выложить выдержки динамически Как перенаправить главную страницу на фактический URL? Как лучше всего использовать WordPress на моем статичном веб-сайте? Запрос WordPress, в котором условие использует настраиваемое поле Несколько шаблонов страниц и CSS подсчитывать количество просмотров сообщения, исключая собственные просмотры Переименуйте имена файлов вложений в файл ID при загрузке Как зарегистрировать и установить предварительную выборку сервера / 2 для определенного актива? Как я могу запросить все сообщения с термином таксономии потока? TinyMCE – Вставка носителя в начале сообщения Пример процедуры uninstaller для удаления всех настраиваемых параметров темы из wp_options Функция поиска в плагине WordPress User

Как отказаться от функции, используемой в плагине?

Одна из функций, которые я использую в моем плагине, загрязняет глобальную область с именем, которое может столкнуться с другой функцией (используемой в другом плагине). Поэтому, я думаю, я должен осудить это. Но как мне это сделать?

function foo() { echo 'bar'; } 

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

Ссылка: https://developer.wordpress.org/reference/functions/_deprecated_function/

Solutions Collecting From Web of "Как отказаться от функции, используемой в плагине?"

В дополнение к ответу @Welcher:

В ядре есть несколько хороших примеров « кладбища », где « функции умирают ».

Вы можете использовать их в качестве рекомендаций, например, в отношении документации.

Вот один из таких примеров для permalink_link() разделе wp-includes/deprecated.php

 /** * Print the permalink of the current post in the loop. * * @since 0.71 * @deprecated 1.2.0 Use the_permalink() * @see the_permalink() */ function permalink_link() { _deprecated_function( __FUNCTION__, '1.2', 'the_permalink()' ); the_permalink(); } 

Вот встроенная документация для функции _deprecated_function которая объясняет входные аргументы:

 /** * Mark a function as deprecated and inform when it has been used. * * There is a hook deprecated_function_run that will be called that can be used * to get the backtrace up to what file and function called the deprecated * function. * * The current behavior is to trigger a user error if WP_DEBUG is true. * * This function is to be used in every function that is deprecated. * * @since 2.5.0 * @access private * * @param string $function The function that was called. * @param string $version The version of WordPress that deprecated the function. * @param string $replacement Optional. The function that should have been called. * Default null. */ 

Устаревание не всегда равно удалению, обычно это означает, что элемент отмечен для удаления EVENTUAL из API. Это метод, который будет называться извне – как в других плагинах или разработчиках? Если этот метод используется только плагином внутри, вы, вероятно, можете безопасно удалить его с лучшей функцией имени.

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

 function badly_named() { __doing_it_wrong( 'badly_named', 'This method has been deprecated in favor of better_named_function' ); /** * Call the better named method */ better_named_function(); } 

Надеюсь это поможет!

Вы создаете новый плагин и советуете своим пользователям переходить на него, поскольку текущий – EOL.

Нет ничего более раздражающего, чем плагины и авторы темы меняют свои общедоступные API-интерфейсы и пытаются рассматривать это как «просто еще одно небольшое обновление». Нет причин для разрывов сайтов из-за проблемы, на которую на самом деле не влияют ваши пользователи.

Я бы предложил что-то вроде:

 /** * @deprecated Please use good_function_name() instead * @since xyz Marked deprecated in favor of good_function_name() * @see good_function_name() */ function bad_function_name() { trigger_error( 'The ' . __FUNCTION__ . ' function is deprecated. ' . 'Please use good_function_name() instead.', defined( 'E_USER_DEPRECATED' ) ? E_USER_DEPRECATED : E_USER_WARNING ); return good_function_name(); } 

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

Тернарный оператор существует, потому что константа E_USER_DEPRECATED была введена только в PHP 5.3.0. В более старых версиях мы можем вместо этого вернуться к простому пользователю.

Из руководства PHP о константах ошибок :

E_DEPRECATED Уведомления о времени выполнения. Включите это, чтобы получать предупреждения о коде, который не будет работать в будущих версиях.

Причина, по которой я не люблю использовать _doing_it_wrong или __deprecated_function, состоит в том, что эти функции предназначены только для ядра WordPress. Из ссылки на эти функции:

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