Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Laravel + Wordpress

Laravel + Wordpress

It's possible to use WordPress with any PHP framework, like Laravel. Corcel is a package that allow you to get WP data using Laravel's Eloquent ORM in a very easy way.

Junior Grossi

April 30, 2016
Tweet

More Decks by Junior Grossi

Other Decks in Programming

Transcript

  1. • Organizador do PHPMG • Mestrado em Ciência da Informação

    / UFMG • Pós-graduação em Desenvolvimento Web / PUC • MBA em Gestão Empresarial / FGV • Bacharel em Ciência da Computação / PUC • Zend Certified Engineer (2011) Sobre |> Junior Grossi
  2. PHP é utilizado em 82.3% de todos os sites que

    utilizam alguma linguagem server-side http://w3techs.com/technologies/ overview/programming_language/all
  3. WordPress é utilizado em 26.4% de TODOS os sites do

    MUNDO http://w3techs.com/ technologies/details/cm-wordpress/all/all
  4. • Junho de 2013 • 230 commits (30.04.16) • 8

    releases (v1.0.6) • 9 países
  5. <?php // app/Http/routes.php Route::get(‘posts’, function() { $posts = Post::lastest()->paginate(10)—>get(); return

    view(‘posts/index’, compact(‘posts’); } Route::get(‘posts/{slug}’, function($slug) { $post = Post::slug($slug)->first; return view(‘news.index’, compact(‘post’); }
  6. $post = Post::find(1); $author = $post->author; echo $author->first_name; echo $author->created_at->format(‘d.m.Y’);

    $comments = $post->comments; foreach ($comments as $comment) { echo $comment->author; }
  7. <?php // config/database.php 'mysql' => [ 'driver' => 'mysql', 'host'

    => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'engine' => null, ], 'wordpress' => [ 'driver' => 'mysql', 'host' => env(‘WP_DB_HOST', 'localhost'), 'port' => env(‘WP_DB_PORT', '3306'), 'database' => env(‘WP_DB_DATABASE', 'forge'), 'username' => env(‘WP_DB_USERNAME', 'forge'), 'password' => env(‘WP_DB_PASSWORD', ''), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => ‘wp_', 'strict' => false, 'engine' => null, ],
  8. <?php namespace App; class Post extends Corcel\Post { protected $connection

    = ‘wordpress’; } // connection injection $nickname = Post::find(10)->author->nickname;
  9. $post = Post::find(1); // custom field named ‘address’ $address =

    $post->meta->address; // OR $address = $post->fields->address; // OR $address = $post->address;
  10. $post = new Post; $post->post_title = ‘My first post’; $post->meta->username

    = 'jgrossi'; $post->meta->url = ‘http://jgrossi.com'; $post->save();
  11. // using ‘type()’ method for ‘video’ post type $videos =

    Post::type(‘video’)->published()->get(); // @return instanceof Corcel\Post
  12. // custom class namespace App; class Video extends Corcel\Post {

    protected $postType = ‘video’; } $videos = Video::published()->get() // @return instanceof App\Video