Как использовать is_admin в wp-config.php

Я пытаюсь выбрать различные базы данных для администратора и пользователя, чтобы уменьшить нагрузку на базу данных. в wp-config.php, когда я пытаюсь использовать код

if(is_admin()) { define('DB_NAME', 'wp_db'); } else { define('DB_NAME', 'other_wp_db'); } 

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

Я получаю сообщение об ошибке

Неустранимая ошибка: вызов неопределенной функции is_admin () в D: \ xampp \ htdocs \ wordpress \ wp-config.php в строке 24

Как использовать функцию is_admin () в файле wp-config.php?

кто-то может помочь.

Solutions Collecting From Web of "Как использовать is_admin в wp-config.php"

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

Есть много вещей, которые вы можете сделать, прежде чем перейти к главному / ведомому маршруту:

  • Проверьте, например, ваши журналы, если там что-то странное происходит.
  • Может быть, это плагин, который дает вам проблемы?
  • Возможно, у вас есть WP_Query который неэффективен?
  • Может быть, вы можете использовать API переходных процессов?
  • Может быть, вы можете рассмотреть устойчивый кэш объектов?
  • Там может быть много плагинов кеша, которые могут помочь.
  • Может быть, среда размещения замедляет вас?
  • Может быть, сервер MySQL не настроен достаточно хорошо? Существуют некоторые полезные скрипты настройки.
  • Возможно, пришло время обновить PHP, MySQL и начать использовать NginX 😉

Если вы решите, что этот маршрут необходим, там уже есть решения, такие как плагин HyperDB , который предоставляет вам db.phpdb.php для размещения в каталоге wp-content . Он проверяет любые записи / обновления во входящих SQL-запросах и перенаправляет их в основную базу данных. Но я просто просмотрел источник, и похоже, что он не поддерживает расширение mysqli , а только устаревший mysql . Если вам это не нравится, то, похоже, существует хотя бы одна развилка, которая поддерживает mysqli (я не связан с этим проектом).

Слишком рано использовать эту встроенную функцию WP. Вы можете использовать его в некоторых файлах плагина или темы, но не тогда, когда среда WP по-прежнему загружается.

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

 if( strpos($_SERVER['REQUEST_URI'],'/wp-admin/') !== FALSE ) { define('DB_NAME', 'wp_db'); } else { ... } 

Но я не думаю, что это пуленепробиваемое решение. Ajax-вызов обрабатывается в администрировании, wp-login.php не распространяется на код выше и т. Д.

Попробуйте вставить код

 if(is_admin()) {...} 

ПОСЛЕ

 require_once(ABSPATH . 'wp-settings.php'); 

потому что функция is_admin () загружается, когда выполняется wp-setting.php. Таким образом, вы можете избежать сообщения об ошибке, но я не понимаю, почему ваш сайт работает правильно только для администратора? Кажется, семантическая ошибка. Я думаю, что некоторые компоненты не будут работать правильно и под администратором.