React App inside WordPress

Δημοσιεύθηκε 23/07/2024

Παρακάτω φαίνεται ο τρόπος να ενσωματωθεί ένα αυτόνομο React app μέσα στο WordPress, ώστε να τρέχει σε slug του WordPress site.
πχ domain .com / react-app-slug

Δημιουργία React App

Αναπτύσσουμε το React App μας με το create-react-app.

npx create-react-app my-react-app
cd my-react-app
...
npm run build

Ενσωμάτωση React App στο WordPress

Αντιγράφουμε όλο το περιεχόμενο του build folder σε ένα φάκελο μέσα στο WordPress theme, για παράδειγμα σε φάκελο react-app.

Και στο functions.php:

function enqueue_react_app() {
    $theme_directory = get_template_directory_uri();

    wp_enqueue_style('react-app-css', $theme_directory . '/react-app/static/css/main.css');
    wp_enqueue_script('react-app-js', $theme_directory . '/react-app/static/js/main.js', array(), null, true);
}
add_action('wp_enqueue_scripts', 'enqueue_react_app');

Το μόνο που απομένει για να τρέξει το app, είναι σε ένα custom page template να περάσουμε το <div id=”root”></div>, όπου και τρέχει το React App.

<?php

/**
 * Template Name: React App Page
 * @package MyTheme
 */
?>

<!DOCTYPE html>
<html <?php language_attributes(); ?>>

<head>
    <meta charset="<?php bloginfo('charset'); ?>">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="Owner" content="<?php bloginfo('name'); ?>">
    <meta name="description" content="<?php bloginfo('description'); ?>">
    <link rel="icon" type="image/png" href="<?php bloginfo('template_directory'); ?>/assets/img/favicon.png" sizes="16x16">
    <?php wp_head(); ?>
</head>

<div id="root"></div>

<?php wp_footer(); ?>
</body>

</html>

Δείτε επίσης το άρθρο Nonce WordPress API for React App inside WordPress.