Pods: Фактическая проблема: зарезервированные имена нельзя добавлять

Созданный на 13 июл. 2019  ·  20Комментарии  ·  Источник: pods-framework/pods

Опишите ошибку
Первое использование Pods. Загляните в это (воспроизведено с использованием мастера): classes/PodsAPI::save_pod выходит из строя перед вызовом cache_flush_pods когда он обнаруживает какие-либо ошибки при сохранении вновь добавленных полей. Хотя кажется, что другие поля все еще сохраняются в базе данных, они не видны конечному пользователю, пока кеш не будет очищен.

Текущая ревизия номер строки 2356 :

if ( ! empty( $errors ) ) {
    return pods_error( $errors, $this );
}

$this->cache_flush_pods( $pod );

(PS Насколько я могу судить, похоже, нет никакой обработки ошибок из-за невозможности сохранить поля.)

Воспроизводить
Шаги по воспроизведению поведения:

  1. Редактировать пакет
  2. Добавьте поле с именем 'foobar'
  3. Добавьте поле с именем name (или post_title, или именем существующего поля)
  4. Сохранить капсулу

Обратите внимание: ни одно из вновь добавленных полей не отображается после сохранения.

Reproduced Bug Documentation

Все 20 Комментарий

Бот Issue-Label автоматически применяет к этой проблеме метку Type: Bug с достоверностью 0,98. Пожалуйста, отметьте этот комментарий: thumbsup: или: thumbsdown:, чтобы оставить отзыв о нашем боте!

Ссылки: домашняя страница приложения , панель инструментов и код этого бота.

+1 Такая же проблема. Установка сохраненных имен не вызывает ошибки.

См. # 4122. Это должно применяться к именам полей, таксономии, пост-типам и т. Д. Кто-то не должен иметь возможность вводить ЛЮБОЕ имя поля, пост-тип или таксономию, которые есть в списке полей зарезервированных имен.

Я отправил отчет об ошибке № 5440, где у меня была такая же проблема с полем, помеченным как «статус». Однако «статус» не входит в список зарезервированных условий Wordpress. Из вышеупомянутого случая «name» есть в этом списке, а «foobar» нет. То же верно и для списка зарезервированных слов PHP.

Список Wordpress: (https://codex.wordpress.org/Reserved_Terms)
Список PHP https://www.php.net/manual/en/reserved.php

Может, мешает какой-то другой список зарезервированных слов?

@raoulunger Вы пробовали последний PR, касающийся зарезервированных ключевых слов?

РЕДАКТИРОВАТЬ: status не является зарезервированным ключевым словом WordPress, но оно предназначено для модулей, поскольку оно используется как одно из полей объекта модуля. (в данный момент все еще исследует)

Привет, я вижу, ты вычеркнул вопрос ;-). Спасибо за расследование!

Да, после расследования выясняется, что status - это псевдоним для post_status внутри модулей (для использования в Magic Tags и т. Д.).
Полный список ключей и псевдонимов по умолчанию:

ID                     ==> id
post_title             ==> title & name
post_content           ==> content
post_excerpt           ==> excerpt
post_author            ==> author
post_date              ==> created & date
post_date_gmt
post_status            ==> status
comment_status
ping_status
post_password
post_name              ==> slug &  permalink
to_ping
pinged
post_modified          ==> modified
post_modified_gmt
post_content_filtered
post_parent            ==> parent
guid
menu_order
post_type              ==> type
post_mime_type
comment_count
comments

@ sc0ttkclark @jimtrue Думаю, этот вопрос можно закрыть, согласны?

Хорошо, это проясняет ситуацию в том, что касается «статуса» - спасибо, что разобрались в этом, и за список!

Чтобы решить более широкую проблему использования зарезервированных слов (эта тема, а также # 4122), кажется, есть несколько вариантов:

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

Кстати, мне, конечно, легко все это предложить, потому что я не могу здесь помочь - мои навыки программирования слишком ограничены, извините!

Ваше здоровье!

ID - это просто зарезервированное ключевое слово, я не думаю, что мы можем это изменить.
Что касается предупреждений, они в настоящее время отображаются, но это делается через AJAX (на стороне сервера), а не непосредственно при вводе. Я думаю, что это то, что мы добавим в будущем, но не в качестве отладочного релиза.
Документация - это всегда хорошая идея. @jimtrue Не могли бы вы создать для этого страницу документа, которую я могу использовать?

Не может быть закрыто, пока это не задокументировано. Любые другие из этих «псевдонимов», которые нельзя было бы создать как поле? т.е. "название" "родитель" и т. д.?

Это все, что я смог найти до сих пор (кроме уже упомянутых ключевых слов WP core)

Это все равно нужно исправить, потому что мы должны объяснить, ПОЧЕМУ мы не разрешаем добавлять эти поля. В данный момент мы не даем им информации.

Это не совсем так, AJAX возвращает сообщение об ошибке, но только при сохранении.

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

Вы пробовали с последним PR? # 5441
Имейте в виду, что эти зарезервированные ключевые слова разрешены для имен полей. Только не для капсул (CPT / Tax), см. № 5428.

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

19 августа 2019 года в 17:50 Джори Хогевен [email protected] написал:

Вы пробовали с последним PR? # 5443 https://github.com/pods-framework/pods/pull/5443
Имейте в виду, что эти зарезервированные ключевые слова разрешены для имен полей. Только не для Pods (CPT / Tax), см. # 5428 https://github.com/pods-framework/pods/pull/5428 .

-
Вы получаете это, потому что вас упомянули.
Ответить на это сообщение непосредственно, просматривать его на GitHub https://github.com/pods-framework/pods/issues/5420?email_source=notifications&email_token=AM2NSKDD43ZU2JY47LPKRV3QFK6LTA5CNFSM4ICZDB72YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD4TNDNQ#issuecomment-522637750 или приглушить нить https://github.com/ уведомления / отписаться-auth / AM2NSKESXEIVUY3PLHRRMW3QFK6LTANCNFSM4ICZDB7Q .

@ sc0ttkclark @jimtrue Это можно закрыть?

Если мы переместим очистку кеша перед отправкой pods_error, мы сможем решить главную задачу этого тикета.

Исправлено в # 5459

Извините, поздняя реакция, но спасибо!

5 сентября 2019 года в 14:27 Скотт Кингсли Кларк [email protected] написал:

Закрыт № 5420 https://github.com/pods-framework/pods/issues/5420 через № 5459 https://github.com/pods-framework/pods/pull/5459 .

-
Вы получаете это, потому что вас упомянули.
Ответить на это сообщение непосредственно, просматривать его на GitHub https://github.com/pods-framework/pods/issues/5420?email_source=notifications&email_token=AM2NSKBMJPPMDU5DSLKEPWTQID3JNA5CNFSM4ICZDB72YY3PNVWWK3TUL52HS4DFWZEXG43VMVCXMZLOORHG65DJMZUWGYLUNFXW5KTDN5WW2ZLOORPWSZGOTOL3AQY#event-2610409539 или приглушить нить https://github.com/ уведомления / отписаться-auth / AM2NSKDMLL2WOT3F7ITJ47TQID3JNANCNFSM4ICZDB7Q .

Была ли эта страница полезной?
0 / 5 - 0 рейтинги