Skip to content

emka.web.id

menulis pengetahuan – merekam peradaban

Menu
  • Home
  • Tutorial
  • Search
Menu

Belajar WordPress: Integrasi aplikasi Yii dalam WordPress

Posted on December 3, 2013

Yii yang tenar sebagai framework pengembangan aplikasi web dengan konsep MVC dan WordPress sebagai sebuah framework CMS/Blogging terpopuler ternyata bisa disatukan. Contoh kasus, misalnya WordPress digunakan sebagai frontpage sebuah Sistem Informasi, dan aplikasi berbasis Yii untuk menangani berbagai kebutuhan sistem informasi. Aplikasi Yii tersebut dikembangkan sebagai plugin WordPress, dan cukup menangani kebutuhan khusus saja, untuk urusan penerbitan konten, berita, user dan lain-lain serahkan saja pada core milik WordPress.

Setelah mencari dan memahami beberapa referensi yang saya dapat, berikut langkah untuk mengintegrasikan aplikasi Yii ke dalam WordPress sebagai sebuah plugin.

1. Install Yii ke dalam direktori plugin WordPress, /wp-content/plugins/pluginyii

2. Edit konfigurasi Yii, dan ubah beberapa baris seperti basepath, nama aplikasi, preload dll seperti saya contohkan berikut:

[sourcecode language=”php”]
<?php

// uncomment the following to define a path alias
//Yii::setPathOfAlias(‘wp-includes’, ABSPATH . ‘wp-includes’);

// This is the main Web application configuration. Any writable
// CWebApplication properties can be configured here.
$plugins = parse_url(WP_PLUGIN_URL);
return array(
‘basePath’=>dirname(__FILE__) . DIRECTORY_SEPARATOR.’..’,
//’baseUrl’=> WP_PLUGIN_URL,
‘name’=>’Plugin Yii untuk WordPress’,
//’aliases’=>array(
// ‘wp-plugins’=> ABSPATH . ‘wp-content’ . DIRECTORY_SEPARATOR . ‘plugins’,
// ),
// preloading ‘log’ component
‘preload’=>array(‘log’),

// autoloading model and component classes
‘import’=>array(
‘application.models.*’,
‘application.components.*’,
//’wordpress.*’,
),
‘defaultController’=>’site’,
‘modules’=>array(
// uncomment the following to enable the Gii tool
/*
‘gii’=>array(
‘class’=>’system.gii.GiiModule’,
‘password’=>’Enter Your Password Here’,
),
*/
),

// application components
‘components’=>array(
‘user’=>array(
// enable cookie-based authentication
‘allowAutoLogin’=>true,
),
‘request’=>array(
//’class’=>’WPHttpRequest’,
‘baseUrl’=> WP_PLUGIN_URL . ‘/pluginyii’,
‘scriptUrl’=> $plugins[‘path’] . ‘/pluginyii/yii.php’,
),
// uncomment the following to enable URLs in path-format
‘assetManager’=>array(
‘basePath’=>dirname(__FILE__) . DIRECTORY_SEPARATOR.’..\..\assets’,
‘baseUrl’=>$plugins[‘path’] . ‘/pluginyii/assets’,
),
‘urlManager’=>array(
//’urlFormat’=>’path’,
‘routeVar’=>’page’,

/*’rules’=>array(
‘<controller:\w+>/<id:\d+>’=>'<controller>/view’,
‘<controller:\w+>/<action:\w+>/<id:\d+>’=>'<controller>/<action>’,
‘<controller:\w+>/<action:\w+>’=>'<controller>/<action>’,
),*/
),
/*
‘db’=>array(
‘connectionString’ => ‘sqlite:’.dirname(__FILE__).’/../data/testdrive.db’,
),*/
// uncomment the following to use a MySQL database
/*
‘db’=>array(
‘connectionString’ => ‘mysql:host=localhost;dbname=testdrive’,
’emulatePrepare’ => true,
‘username’ => ‘root’,
‘password’ => ”,
‘charset’ => ‘utf8’,
),
*/
‘errorHandler’=>array(
// use ‘site/error’ action to display errors
‘errorAction’=>’site/error’,
),
‘log’=>array(
‘class’=>’CLogRouter’,
‘routes’=>array(
array(
‘class’=>’CFileLogRoute’,
‘levels’=>’error, warning’,
),
// uncomment the following to show log messages on web pages
/*
array(
‘class’=>’CWebLogRoute’,
),
*/
),
),
),

// application-level parameters that can be accessed
// using Yii::app()->params[‘paramName’]
‘params’=>array(
// this is used in contact page
‘adminEmail’=>’luthfi@emka.web.id’,
),
);
[/sourcecode]

3. Pada file index.php milik Yii, coba tulis:

[sourcecode language=”php”]
<?php
/**
* @package Yii Test Plugin
*/
/*
Plugin Name: Yii Test Plugin
*/
// change the following paths if necessary

function yiiapp_init(){
global $yii_app;

$config = dirname(__FILE__).’/protected/config/main.php’;
$yii_app = Yii::createWebApplication($config);
//$yii_app = Yii::createApplication(‘SiteController’,$config);
//Yii::setApplication($yii_app);

}

function yiiapp_admin_actions()
{
global $yii_app;
add_menu_page("Yii", "Home", 1, ‘site/’, array(&$yii_app,"run"));
add_submenu_page(‘site/’, ‘Yii’, ‘About’, 1, ‘site/page/view/about’, array(&$yii_app,"run"));
add_submenu_page(‘site/’, ‘Yii’, ‘Contact’, 1, ‘site/contact’, array(&$yii_app,"run"));
//add_submenu_page(basename(__FILE__), "Yii", "Contact", 3, __FILE__, array(&$yii_app,"run"));

}

global $yii_app;
$yii = dirname(__FILE__).’/../../../../yii/framework/yii.php’;
// remove the following lines when in production mode
defined(‘YII_DEBUG’) or define(‘YII_DEBUG’,true);
// specify how many levels of call stack should be shown in each log message
defined(‘YII_TRACE_LEVEL’) or define(‘YII_TRACE_LEVEL’,6);
require_once($yii);

if ( !defined( ‘WP_AUTOLOAD_CLASSES’ ) ) {
define(
‘WP_AUTOLOAD_CLASSES’,
function_exists( ‘spl_autoload_register’ )
);
}

if ( WP_AUTOLOAD_CLASSES ) {

function wp_autoload( $class, $path = null ) {
$classes = array(‘SimplePie’ => ABSPATH . ‘wp-includes/class-simplepie.php’, ‘WP_User_Search’ => ABSPATH . ‘wp-admin/includes/user.php’);

// Being called by PHP’s autoloader
if ( is_null( $path ) ) {

if ( isset( $classes[$class] ) && !class_exists($class,false)) {
include_once( $classes[$class] );
} else {

}
return;
}

// Being called by us
// $classes[$class] = $path;
// spl_autoload_unregister( ‘wp_autoload’ );
}

// Register it
spl_autoload_register( ‘wp_autoload’ );
} else {
function wp_autoload( $class, $path ) {
require_once( $path );
}
}

class YiiAutoLoad extends YiiBase {

public static function autoload($className)
{
if(!class_exists($className,false))
parent::autoload($className);
}
}

Yii::registerAutoloader(wp_autoload);

add_action(‘admin_init’, ‘yiiapp_init’);
add_action(‘admin_menu’, ‘yiiapp_admin_actions’);
//add_action(”);
spl_autoload_unregister(array(‘YiiBase’, ‘autoload’));
spl_autoload_register(array(‘YiiAutoLoad’,’autoload’));
[/sourcecode]

4. Buat file yii.php sebagai aplikasi utama. Contoh:

[sourcecode language=”php”]
<?php
/**
* @package Yii Test Plugin
*/
/*
Plugin Name: Yii Test Plugin
*/
// change the following paths if necessary
$yii=dirname(__FILE__).’/../../../../yii/framework/yii.php’;
$config=dirname(__FILE__).’/protected/config/main.php’;

// remove the following line when in production mode
defined(‘YII_DEBUG’) or define(‘YII_DEBUG’,true);

require_once($yii);
Yii::createWebApplication($config)->run();
[/sourcecode]

Referensi:

– YiiFramework : www.yiiframework.com
– Integrating Yii with WordPress: http://www.yiiframework.com/wiki/202/integrating-yii-with-wordpress/

Terbaru

  • Inilah Cara Pakai Google Maps Offline Biar Mudik Lebaran 2026 Nggak Nyasar Meski Tanpa Sinyal!
  • Inilah Alasan Mahkamah Agung Tolak Kasasi Google, Denda Rp202,5 Miliar Resmi Menanti Akibat Praktik Monopoli
  • Inilah Cara Daftar dan Syarat SPMB SMK Boarding Jawa Tengah 2026, Sekolah Gratis Sampai Lulus!
  • Inilah Daftar Sekolah Kedinasan 2026 untuk Lulusan SMK, Bisa Kuliah Gratis dan Berpeluang Besar Langsung Jadi CPNS!
  • Inilah Pajak TER: Skema Baru PPh 21 yang Nggak Bikin Pusing, Begini Cara Hitungnya!
  • Inilah Jadwal Resmi Jam Buka Tol Jogja-Solo Segmen Prambanan-Purwomartani Saat Mudik Lebaran 2026
  • Inilah Cara Mendapatkan Witherbloom di Fisch Roblox, Rahasia Menangkap Ikan Paling Sulit di Toxic Grove!
  • Kenapa Indomart Point Bisa Kalahkan Bisnis Kafe?
  • Inilah Cara Mendapatkan Rotten Seed di Fisch Roblox, Lokasi Rahasia di Toxic Grove Buat Unlock Toxic Lotus!
  • Inilah Cara Zakat Crypto Kalian Bisa Jadi Pengurang Pajak Berdasarkan Aturan Resmi Pemerintah!
  • Inilah Perbandingan Airwallex vs Payoneer 2026: Jangan Sampai Profit Kalian Ludes Gara-Gara Biaya Admin!
  • Inilah Roadmap 7 Tahap Bangun Bisnis Digital dari Nol Biar Nggak Cuma Putar-Putar di Tempat!
  • Inilah Cara Tetap Gajian dari YouTube Meski View Masih Ratusan, Penasaran?
  • Inilah Alasan Akun TikTok Affiliate GMV 270 Juta Kena Banned Permanen!
  • Inilah Bahaya Astute Beta Server APK, Jangan Sembarang Klik Link Download FF Kipas 2026!
  • Inilah Bahaya Nonton Film di LK21 dan IndoXXI, Awas Data Pribadi dan Saldo Rekening Kalian Bisa Ludes!
  • Inilah Kronologi & Video Lengkap Kasus Sejoli Tambelangan Sampang Viral, Ternyata Gini Awal Mulanya!
  • Inilah Alasan Kenapa Koin Nego Neko Shopee Nggak Bisa Dipakai Bayar Full dan Cara Rahasia Dapetinnya!
  • Inilah Cara Menjawab Pertanyaan Apakah di Sekolahmu Sudah Ada IFP/PID dengan Benar dan Profesional
  • Inilah Fakta Isu Roblox Diblokir di Indonesia 2026, Benarkah Akan Ditutup Total?
  • Inilah Penyebab dan Cara Mengatasi FF Kipas My ID Verify UID Biar Akun Tetap Aman
  • Inilah Deretan HP RAM 8GB Harga di Bawah 2 Juta Terbaik 2026, Spek Dewa Tapi Nggak Bikin Kantong Jebol!
  • Contoh Cara Buat SK Panitia TKA 2026
  • Inilah Cara Download Point Blank ID Versi Terbaru 2026, Gampang Banget Ternyata!
  • Inilah Persiapan Lengkap Gladi Bersih TKA 2026 SD dan SMP: Jadwal, Teknis Proktor, dan Aturan yang Wajib Kalian Tahu
  • Inilah Aturan Lengkapnya, Apakah Zakat dalam Bentuk Barang Bisa Mengurangi Pajak Penghasilan Kalian?
  • Inilah Kenapa KBLI Sangat Penting Buat Bisnis Digital dan Gini Caranya Biar Kalian Nggak Salah Pilih Kode
  • Inilah Fitur Keren ONLYOFFICE Docs 9.3, Cara Baru Edit PDF dan Dokumen Lebih Efisien!
  • Inilah Cara Banjir Komisi Shopee Affiliate Hanya Dalam 7 Hari Saja
  • Cara Download Aplikasi BUSSID Versi 3.7.1 Masih Dicari dan Link Download Aman Mediafire
  • The Ultimate 2026 Coding Roadmap: How to Master Software Engineering with AI Agents
  • How to Master Cloud Infrastructure with Ansible and Terraform
  • How to Fix VirtualBox Stuck on Saving State: A Complete Guide
  • How to Run Windows Apps on Linux: A Complete Guide to WinBoat, WINE, and Beyond
  • Build Your Own AI Development Team: Deploying OpenClaw and Claude Code on a VPS!
  • How to Setup Clawdbot Computer Agents Client
  • Bytedance Helios: How to Generate Real-Time Long AI Videos on Your Own Computer
  • New Perplexity AI Feature, March 2026 is Insane
  • How to LLM Finetuning with FPT AI Factory
  • New ComfyUI Released, The App Mode is Amazing
  • Apa itu Spear-Phishing via npm? Ini Pengertian dan Cara Kerjanya yang Makin Licin
  • Apa Itu Predator Spyware? Ini Pengertian dan Kontroversi Penghapusan Sanksinya
  • Mengenal Apa itu TONESHELL: Backdoor Berbahaya dari Kelompok Mustang Panda
  • Siapa itu Kelompok Hacker Silver Fox?
  • Apa itu CVE-2025-52691 SmarterMail? Celah Keamanan Paling Berbahaya Tahun 2025

©2026 emka.web.id | Design: Newspaperly WordPress Theme