Połączenie WordPress z frameworkiem MVC

Koncepcja współpracy WordPress z Laravel (lub innym frameworkiem MVC) opiera się na następujących założeniach:

  • WordPress wykorzystujemy jako backend, zapisujemy tam wpisy, strony itd., czyli traktujemy jako miejsce do składowania treści
  • Laravel z kolei – jako frontend, czyli obróbka zmagazynowanych danych, ich wyświetlenie na stronie

Przykład jak zrobić prostą aplikację w Laravel zamieszczony jest tutaj. Przedstawiony niżej opis jest z wykorzystaniem środowiska LAMP (linux, apache,mysql,php).

Etap 1

Skopiuj świeży folder z WordPress do katalogu Laravel: app/wordpress.

Etap2

Utwórz wirtualne hosty: jeden dla Laravel, a drugi dla panelu administracyjnego WordPress. Przykład:

<VirtualHost *:80>
	ServerAdmin webmaster@localhost
        ServerName wp-lvl.loc
        ServerAlias www.wp-lvl.loc

	DocumentRoot /var/www/FOLDER-TestApps/wp-lvl/public
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /var/www/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride All
		Order allow,deny
		allow from all
	</Directory>

	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
	<Directory "/usr/lib/cgi-bin">
		AllowOverride None
		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
		Order allow,deny
		Allow from all
	</Directory>

	ErrorLog ${APACHE_LOG_DIR}/error.log

	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn

	CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
	

	ServerAdmin webmaster@localhost
        ServerName wp-admin.wp-lvl.loc
        ServerAlias www.wp-admin.wp-lvl.loc

	DocumentRoot /var/www/FOLDER-TestApps/wp-lvl/app/wordpress
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /var/www/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride All
		Order allow,deny
		allow from all
	</Directory>

	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
	<Directory "/usr/lib/cgi-bin">
		AllowOverride None
		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
		Order allow,deny
		Allow from all
	</Directory>

	ErrorLog ${APACHE_LOG_DIR}/error.log

	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn

	CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

gdzie „wp-lvl” to katalog z frameworkiem Laravel. Jeśli korzystasz z lokalnego serwera na komputerze domowym (jak tutaj w tym przypadku), musisz dodać jeszcze wpis o nowych wirtualnych hostach w pliku /etc/hosts. Zrestartuj serwer.

Po tych zabiegach dostęp do back-endu WordPress będzie z adresu wp-admin.domena.pl. A front-end na domena.pl. Jeszcze jednak nie wchodź na podane adresy.

Zostań Profesjonalistą W Tworzeniu Aplikacji Webowych! Zapisz Się Na Kurs Laravel nauczysz się również tworzyć aplikacje hybrydowe na smartfony

Etap 3

Edytuj plik wordpress/index.php. Na samej górze dopisz:

header("Location: ./wp-admin");
exit();

Przekieruje to nas do panelu administracyjnego WordPress, bo tylko do tego celu chcemy go tutaj wykorzystywać.

Etap 4

Przejdź do adresu wp-admin.domena.pl i zainstaluj WordPressa tak jak to zwykle robisz.

Etap 5

Ustaw dane dostępowe do bazy danych dla Laravel – takie same jak dla WordPress.

Etap 6

Edytuj plik public/index.php. Na samej górze dopisz:

define('WP_USE_THEMES', false);
/** Loads the WordPress Environment and Template */
require __DIR__.'/../app/wordpress/wp-blog-header.php';

Od tej pory wszystkie funkcje i klasy WordPress są dostępne w aplikacji Laravel.

Etap 7

Edytuj plik app/routes.php. Dopisz na końcu:

Route::get('/posts', function()
{
global $wpdb;
$query = new WP_Query(array(
'post_type' => ['page','post']

));
$posts = $query->get_posts();

return View::make('posts')->with('posts',$posts);
});

Czyli po dopisaniu do paska adresu „/posts” wczytany zostanie widok „posts” z dostępnymi tam danymi o wpisach, które wyciągamy metodami WordPress.

Etap 8

Utwórz wspomniany widok w app/views/posts.blade.php. Zapisz tam:

<!doctype html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<title>Laravel z WordPress</title>
</head>
<body>
<div class="welcome">
{{ dd($posts) }}
</div>
</body>
</html>

Teraz po wczytaniu adresu /posts w naszej aplikacji Laravel, zobaczymy wyświetlony obiekt $posts z danymi gotowymi do obróbki w tym widoku, które to dane zostały stworzone w panelu administracyjnym WordPress.

zapisz się na kurs Laravela >>>> lub program partnerski
Share

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *