Intereting Posts
Опубликовать в WordPress с помощью REST API с внешнего сайта Защита многоуровневой структуры прав доступа Отображение сообщений на основе роли пользователя Установите заголовок сообщения на то же значение, что и метка буксировки Показывать одно сообщение, то все сообщения (с разбивкой на страницы) Multisite – получить эскиз для объединенных запросов get_posts () Как восстановить постоянно удаленные сообщения в блоге? Рекомендации, необходимые для импорта настраиваемых полевых данных и структуры базы данных как сделать автоматическую ссылку на основе ключевого слова по заголовку в сообщении? Создайте виджет, который позволяет вводить текст Как настроить кнопку отправки комментария WordPress? Ограничить тип файла и wp-файлы Невозможно отобразить пользовательский виджет Изменить название метабокса Функция get_the_ID () не возвращает 404 и поисковые страницы

Заменить функцию плагина на пользовательскую функцию?

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

Исходная функция плагина:

 function sep_get_the_event_end_date ($ post = NULL) {
     $ post = get_post ($ post);
     if ($ post-> post_type! == 'event_listing') {
         вернуть;
     }
     $ event_xml = get_post_meta (get_the_ID (), 'event_meta', TRUE);
     $ xml_object = новый SimpleXMLElement ($ event_xml);
     $ end_date = isset ($ xml_object-> end_date)?  $ xml_object-> end_date: '';
     $ event_date = isset ($ xml_object-> event_date)?  $ xml_object-> event_date: '';
     if (isset ($ end_date) и '' $ end_date и 'checked' $ event_date) {
         $ end_date = isset ($ xml_object-> end_date)?  $ xml_object-> end_date: '';
         $ end_date = new DateTime ($ end_date);
         $ end_date = date_format ($ end_date, 'F d, Y');
     } else {

         $ end_date = '';
     }
     return apply_filters ('sep_the_event_end_date', $ end_date, $ post);
 }

Я хочу изменить формат даты $end_date . Что-то вроде «jS M Y».

Я попробовал это:

Создал новый файл: custom-date-planner.php и изменил формат даты.


     function custom_sep_get_the_event_end_date ($ post = NULL) {
         $ post = get_post ($ post);
         if ($ post-> post_type! == 'event_listing') {
             вернуть;
         }
         $ event_xml = get_post_meta (get_the_ID (), 'event_meta', TRUE);
         $ xml_object = новый SimpleXMLElement ($ event_xml);
         $ end_date = isset ($ xml_object-> end_date)?  $ xml_object-> end_date: '';
         $ event_date = isset ($ xml_object-> event_date)?  $ xml_object-> event_date: '';
         if (isset ($ end_date) и '' $ end_date и 'checked' $ event_date) {
             $ end_date = isset ($ xml_object-> end_date)?  $ xml_object-> end_date: '';
             $ end_date = new DateTime ($ end_date);
             $ end_date = date_format ($ end_date, 'd M, Y');
         } else {

             $ end_date = '';
         }
         return apply_filters ('custom_sep_the_event_end_date', $ end_date, $ post);
     }

Далее в моих functions.php я сделал это:

 // Добавить файл
 require_once (get_stylesheet_directory (). '/public/partials/custom-date-planner.php');

 add_action ('after_setup_theme', 'child_theme_setup', 100);
 function child_theme_setup () {

     remove_action ('sep_the_event_end_date', 'sep_get_the_event_end_date');

     add_action ('sep_the_event_end_date', 'custom_sep_get_the_event_end_date');
 }

С этим запуском я получаю уведомление: Notice: Trying to get property of non-object in /private/var/www/fashion/data/web/public/wp-content/themes/furnde-child/public/partials/custom-date-planner.php on line 4

Как я могу заставить это работать?

На ваш вопрос, как я могу заменить эту функцию. Вам не нужно его заменять. У функции есть фильтр на возвращаемом значении, а не на действие. Вам не нужно его удалять, просто отфильтруйте результат.

Таким образом, вы можете создать новую функцию и вызвать ее с помощью add_filter('sep_the_event_end_date', 'yourfunction'); Поместите это в свой файл functions.php без плагина add_action _loaded.

В функции, которую вы используете в качестве замены. Вы не получаете данные сообщения, или вы только что оставили это?

 post = get_post($post); 

Кажется, что параметр $post не всегда корректен.

Возможно, двойная проверка.

Измените это:
if ($post->post_type !== 'event_listing') {
В этом:
if ( ! isset($post->post_type) || $post->post_type !== 'event_listing' ) {