Come integrare WordPress e Laravel

Parliamo sempre di sviluppo di applicazioni Web che può richiedere molto tempo e risorse. Se anche te in alcuni progetti fai utilizzo di WordPress, ti starai chiedendo se esiste un modo migliore per integrare il tuo processo di sviluppo con il tuo sistema di gestione dei contenuti (CMS). Oppure se come me hai ricevuto richieste da parte di clienti/committenti per far interagire WordPress con un CRM creato appositamente secondo le esigenze di dichiarate in fase di analisi.

in nostro aiuto uno dei framework di programmazione PHP più popolari nel mondo della programmazione web “Laravel”, può essere integrato con WordPress. Questa combinazione può consentirti di gestire lo sviluppo della tua applicazione web attraverso il back-end di WordPress o viceversa, offrendo un flusso di lavoro più snello.

conosciamo Laravel

Laravel è un framework MVC che serve ad uno sviluppatore web a rendere i propri progetti più performanti. Laravel è un framework open source scritto in PHP;

 

  • Model View Controller (MVC).

    Questa è una struttura architettonica che separa i tre componenti dello sviluppo PHP: il modello, la vista e il controller. Ciò significa che uno sviluppatore può isolare ogni parte e apportare modifiche senza influire sugli altri componenti.

  • Programmazione orientata agli oggetti.

    In un approccio di programmazione orientato agli oggetti, come PHP, le strutture sono costruite con dati o “Oggetti”, piuttosto che con funzioni e logica. Possono quindi essere utilizzati in tutto il programma. Ogni oggetto ha proprietà e comportamenti che definiscono il suo stato e cosa può fare.

  • API REST.

    Si tratta di uno stile architettonico utilizzato dalla maggior parte delle applicazioni Web open source per formare uno scambio di informazioni praticabile.

Usiamo Laravel con WordPress

L’integrazione di Laravel con WordPress può essere eseguita in vari modi. adesso noi vedremo l’utilizzo di una Libreria Corcel _

Utilizzando WordPress Corcel

Corcel è un insieme di classi PHP che consentono ai programmatori di recuperare e utilizzare le informazioni direttamente da WordPress. Può funzionare come un ponte tra WordPress e Laravel.

Installando Corcel, sarai in grado di utilizzare WordPress come amministrazione back-end del tuo progetto per l’inserimento di dati, come post o tipi di post personalizzati, direttamente dalla tua applicazione Laravel.

Installiamo Corcel

Per eseguire l’installazione andremo a utilizzare composer, il gestore dei pacchetti & dipendenze per il linguaggio di programmazione PHP, eseguiamo il seguente comando _

composer require jgrossi/corcel

Configuriamo Laravel per Corcel

per le versioni dalla 5.5 e superiori, Corcel si registrerà utilizzando l’Auto Discovery di Laravel.

per le versioni dalla 5.4 o inferiori dobbiamo  includere CorcelServiceProvider in your config/app.php

'providers' => [
    /*
     * Package Service Providers...
     */
    Corcel\Laravel\CorcelServiceProvider::class,
]

Publichiamo il file di configurazione

Ora assicuriamo che il database sia impostato correttamente e consentiamogli di registrare tipi di post personalizzati e codici brevi in un modo molto semplice, dal terminale lanciamo il seguente comando:

php artisan vendor:publish --provider="Corcel\Laravel\CorcelServiceProvider"

Ora verra un file di configurazione in config/corcel.php, dove si potrà impostare la connessione al database con le tabelle di WordPress e molto altro.

Configurazione Database

Supponiamo di avere le seguenti connessioni al database nel tuo file config/database.php

// File: /config/database.php
'connections' => [
    'mysql' => [ // for Laravel database
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'mydatabase',
        'username'  => 'admin'
        'password'  => 'secret',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
        'engine'    => null,
    ],
    'wordpress' => [ // for WordPress database (used by Corcel)
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'mydatabase',
        'username'  => 'admin',
        'password'  => 'secret',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => 'wp_',
        'strict'    => false,
        'engine'    => null,
    ],
],

In questo caso usiamo la connessione wordpress per Corcel, quindi impostala nel file di configurazione di Corcel config/corcel.php

'connection' => 'wordpress',

Vediamo come usare Corcel

// All published posts
$posts = Post::published()->get();
$posts = Post::status('publish')->get();
// A specific post
$post = Post::find(31);
echo $post->post_title;

Se andiamo a scrivere e testare il codice soprastante ci accorgiamo come di standard andremo a usare i modelli di Corcel, per andare a lavorare nel DB che precedentemente abbiamo creato e configurato “WordPress” _

Creating your own model classes

Opzionalmente puoi creare il tuo modello di Post (o Pagina, o qualsiasi altra cosa) che estende Corcel/Post. Quindi imposta il nome della connessione (se vuoi sovrascrivere quello predefinito di Corcel) che stai usando, in questo caso foo-bar:

<?php // File: app/Post.php
namespace App;
use Corcel\Model\Post as Corcel;
class Post extends Corcel
{
    protected $connection = 'foo-bar';
    public function customMethod() {
        //
    }
}

Quindi, ora puoi recuperare i dati del database WP usando la tua classe:

$posts = App\Post::all(); // using the 'foo-bar' connection

come vedete per richiamare il nostro modello invece che quello di Corcel useremo la seguente sintassi anteponendo alla chiamata del nostro Modello, la nostra applicazione “APP”;

Meta Data (Custom Fields)

Puoi anche recuperare i metadati dai post.

$post = Post::find(31);
echo $post->meta->link; // OR
echo $post->fields->link;
echo $post->link; // OR

Per creare o aggiornare i metadati da un utente basta usare i metodi saveMeta() o savefield() . I due metodi restituiranno un valore booleano true/false

$post = Post::find(1);
$post->saveMeta('username', 'jgrossi');

Puoi anche salvare molti metadati allo stesso tempo:

$post = Post::find(1);
$post->saveMeta([
    'username' => 'jgrossi',
    'url' => 'http://jgrossi.com',
]);

per altro rimandiamo alla documentazione ufficiale: https://github.com/corcel/corcel