Intereting Posts

Что делает wp_update_post (), что класс $ wpdb нет?

Недавно мне пришлось внести прямые изменения в мою таблицу wp_posts из плагина WordPress. Сначала я попытался сделать это с помощью wp_update_post() , думая, что это сделает это. По-видимому, wp_update_post() может редактировать только предопределенный набор полей таблицы (предположительно, по умолчанию для WP). Затем я $wpdb классом $wpdb . Я думал, что прочитал, что wp_update_post() использует $wpdb что интересно, но затем задает вопрос, почему wp_update_post() когда вы можете просто использовать класс $wpdb напрямую? Что делает wp_update_post() , что нет $wpdb ? Какая потребность в заполнении? Или это скорее проблема управления, как ресурсы или безопасность? Если это так, то каковы недостатки использования $ wpdb напрямую?

Solutions Collecting From Web of "Что делает wp_update_post (), что класс $ wpdb нет?"

  1. wp_update_post() вызывает некоторые перехватчики, которые $wpdb не принадлежит ему. Вам придется сделать это самостоятельно, чтобы сделать его совместимым с другими плагинами.

  2. wp_update_post() вызывает некоторые функции, связанные с санитарией записи, эскизами, вложениями, временем (форматом, зоной и т. д.), комментариями, таксономией, мета-кешем и т. д. Поэтому, если вы используете $wpdb , убедитесь, что вы обрабатываете все их по мере необходимости ,

  3. WordPress будет обновлять wp_update_post() чтобы всегда поддерживать его совместимость с текущим состоянием базы данных, базового CODE, поддержки плагинов и т. Д. Даже если вы все сделаете правильно, будущие обновления будут сложны для вас с помощью $wpdb .

Поэтому, если что-то можно сделать с помощью wp_update_post() , тогда всегда используйте его, используйте только $wpdb если с ним не удастся выполнить требуемые действия, связанные с обновлением сообщения.

Почему WP_Query (), когда вы можете просто использовать WPDB?

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

Указанный вопрос относительно wp_update_post() и предопределенных полей говорит о 2 полях, которые не являются частью установки WordPress по умолчанию, которые являются group_access и tag_list . Функция wp_update_post() ударит по всем встроенным полям.

$wpdb заключаются в том, что вам нужно знать SQL, и вам нужно осознавать нормальную санитарию данных и когда использовать prepare() и какие функции уже готовит ваше утверждение, которое вряд ли является недостатком. Класс $wpdb по своей природе более мощный, чем любая из функций WordPress по умолчанию, потому что у вас есть доступ ко всем данным, обычным или нет, если вы знаете правильный SQL для получения, изменения или удаления.

TL; DR $wpdb более мощный, но менее дружелюбный и прощающий.

Большинство функций API имеют как / оба действия, так и фильтры, прикрепленные к ним. Другие плагины или темы могут иметь код, прикрепленный к этим действиям, который не будет срабатывать при непосредственном добавлении / обновлении таблиц.

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