Как через WordPress отключать приложение написанное на React

Ответ

Для отключения React-приложения в WordPress можно использовать несколько подходов:

  1. Удаление скрипта/стилей через wp_dequeue_script() и wp_dequeue_style() в functions.php:
function disable_react_app() {
  wp_dequeue_script('react-app-handle');
  wp_dequeue_style('react-app-style');
}
add_action('wp_enqueue_scripts', 'disable_react_app', 100);
  1. Условная загрузка через проверку шорткода/блока:
function conditional_react_load() {
  if (!has_block('custom/react-block') && !has_shortcode(get_the_content(), 'react_shortcode')) {
    wp_dequeue_script('react-app-handle');
  }
}
  1. Плагин-переключатель - создать опцию в админке и проверять её перед загрузкой ассетов.

Для полного удаления нужно также очистить HTML-контейнер приложения, если он рендерится сервером.

Ответ 18+ 🔞

Да ты послушай, что за дичь творится с этими твоими React-приложениями в WordPress! Сидит оно, сука, как чужой глист в кишках, и ни хуя не выковыряешь. Ну ладно, раз уж полез, сейчас расскажу, как его нахер отключить, чтобы и духу не было.

Первый способ, самый тупой и прямолинейный, как удар кирпичом по лбу. Берёшь и просто выпиливаешь скрипты со стилями из головы. В этот самый functions.php суёшь вот такую простыню:

function disable_react_app() {
  wp_dequeue_script('react-app-handle');
  wp_dequeue_style('react-app-style');
}
add_action('wp_enqueue_scripts', 'disable_react_app', 100);

Вот и всё, ёпта! Сработает на раз. Главное — знать, как эта падла называется (этот самый react-app-handle), а то будешь как Герасим — мычать, а нихуя не выйдет.

Второй способ — для хитрожопых. Может, тебе не везде его выключать надо, а только там, где он нихуя не нужен? Ну, типа, нет на странице специального блока или шорткода — нет и скрипта. Логично же, блядь!

function conditional_react_load() {
  if (!has_block('custom/react-block') && !has_shortcode(get_the_content(), 'react_shortcode')) {
    wp_dequeue_script('react-app-handle');
  }
}

Подключил эту проверку — и спокоен, как удав. Скрипт будет грузиться только там, где реально требуется, а не на каждой странице про «Мою прекрасную няню».

Ну и третий вариант — для параноиков с админкой. Сделай себе переключатель, прям как выключатель света в сортире. Плагин запили или поле в настройках темы. Типа «Включить реакт-приложение? [ ] Да [✓] Нет, нахуй». И потом в коде смотришь:

if (get_option('disable_that_react_shit') === true) {
    // Все действия по выпиливанию
}

Красота, блядь! Сам себе хозяин. Захотел — включил, захотел — вырубил, не лезя в код.

А, и да, самое главное, ебать мои старые костыли, не забудь! Если эта React-шняга ещё и на сервере что-то рендерит, оставляя после себя в HTML какой-нибудь <div id="root">...</div>, то его тоже надо зачистить. А то будет висеть, как памятник твоей глупости — пустой и бесполезный. Удали его через тот же хук или фильтр, или на фронте скриптом, если совсем припёрло.

Вот и вся наука. Выбирай, что тебе ближе по душе, и — впердолить!