-->

Membuat otomatis install plugin pada themes wordpress

- Friday, October 04, 2013
advertise here
advertise here
Dalam pengembangan fungsi website terutama pada website yang berplatform cms wordpress tidak lepas dari peran fungsi daripada modul/ plugin, untuk membuat fungsi tambahan sesuai yang diinginkan pastinya. Memang ketika menggunakan cms wordpress dalam konstruksi sebuah website kita dipermudahkan dengan sistem bawaanya yang sudah terintegrasi dengan repository developer wordpress secara langsung/ otomatis, salah satu contohnya yaitu fitur didalamnya dalam bentuk plugin. Namun terkadang ketika kita membuat sistem baru tidak jarang kalau kita akan mengedit ulang plugin tersebut sesuai dengan keinginan kita. Disini akan dijelaskan untuk mensetting sebuah themes yang kita setting sendiri untuk mengharuskan install plugin dari bawaan themes tersebut secara otomatis dengan mengambil plugin yang sudah disiapkan dalam folder themes tersebut. Secara teknis ketika kita mengaktifkan/ upload themes yang sudah kita setting tersebut akan ada notice/ pemberitahuan untuk mengharuskan install plugin yang sifatnya bisa kita setting sendiri, baik itu berupa anjuran/ rekomendasi atau plugin yang harus diinstall kalau sifatnya primer kebutuhan themes tersebut.


Diatas merupakan salah satu contoh gambaran yang sudah selesai tahap pengembangan pada themes yang disetting dengan default plugin bawaannya.

Untuk memulainya, pada bawaan themes yang sudah ada Anda tinggal meletakkan code scripth yang ada seperti pada dibawah ini ke file function.php pada themes.

//requery plugin on themes //
/**
 * This file represents an example of the code that themes would use to register
 * the required plugins.
 *
 * It is expected that theme authors would copy and paste this code into their
 * functions.php file, and amend to suit.
 *
 * @package    TGM-Plugin-Activation
 * @subpackage Example
 * @version    2.3.6
 * @author    Thomas Griffin 
 * @author    Gary Jones 
 * @copyright  Copyright (c) 2012, Thomas Griffin
 * @license    http://opensource.org/licenses/gpl-2.0.php GPL v2 or later
 * @link       https://github.com/thomasgriffin/TGM-Plugin-Activation
 */

/**
 * Include the TGM_Plugin_Activation class.
 */
require_once dirname( __FILE__ ) . '/gb-plugin-activation.php';

add_action( 'tgmpa_register', 'my_theme_register_required_plugins' );
/**
 * Register the required plugins for this theme.
 *
 * In this example, we register two plugins - one included with the TGMPA library
 * and one from the .org repo.
 *
 * The variable passed to tgmpa_register_plugins() should be an array of plugin
 * arrays.
 *
 * This function is hooked into tgmpa_init, which is fired within the
 * TGM_Plugin_Activation class constructor.
 */
function my_theme_register_required_plugins() {

 /**
  * Array of plugin arrays. Required keys are name and slug.
  * If the source is NOT from the .org repo, then source is also required.
  */
 $plugins = array(

  // This is an example of how to include a plugin pre-packaged with a theme
  array(
   'name'         => 'Nama plugin', // The plugin name
   'slug'         => 'nama plugin', // The plugin slug (typically the folder name)
   'source'       => get_stylesheet_directory() . '/plugins/nama-plugin.zip', // The plugin source
   'required'     => true, // If false, the plugin is only 'recommended' instead of required
   'version'     => '', // E.g. 1.0.0. If set, the active plugin must be this version or higher, otherwise a notice is presented
   'force_activation'   => false, // If true, plugin is activated upon theme activation and cannot be deactivated until theme switch
   'force_deactivation'  => false, // If true, plugin is deactivated upon theme switch, useful for theme-specific plugins
   'external_url'    => '', // If set, overrides default API URL and points to an external URL
  ),
  
  // This is an example of how to include a plugin from the WordPress Plugin Repository
  array(
   'name'   => 'Wordpress Importer',
   'slug'   => 'wordpress-importer',
   'required'  => false,
  ),

 );

 // Change this to your theme text domain, used for internationalising strings
 $theme_text_domain = 'greenhouse';

 /**
  * Array of configuration settings. Amend each line as needed.
  * If you want the default strings to be available under your own theme domain,
  * leave the strings uncommented.
  * Some of the strings are added into a sprintf, so see the comments at the
  * end of each line for what each argument will be.
  */
 $config = array(
  'domain'         => $theme_text_domain,          // Text domain - likely want to be the same as your theme.
  'default_path'   => '',                          // Default absolute path to pre-packaged plugins
  'parent_menu_slug'  => 'themes.php',     // Default parent menu slug
  'parent_url_slug'  => 'themes.php',     // Default parent URL slug
  'menu'           => 'install-required-plugins',  // Menu slug
  'has_notices'       => true,                        // Show admin notices or not
  'is_automatic'     => false,         // Automatically activate plugins after installation or not
  'message'    => '',       // Message to output right before the plugins table
  'strings'        => array(
   'page_title'                          => __( 'Install Required Plugins', $theme_text_domain ),
   'menu_title'                          => __( 'Install Plugins', $theme_text_domain ),
   'installing'                          => __( 'Installing Plugin: %s', $theme_text_domain ), // %1$s = plugin name
   'oops'                                => __( 'Sesuatu yang tidak beres dengan plugin API.', $theme_text_domain ),
   'notice_can_install_required'        => _n_noop( 'Tema ini membutuhkan plugin berikut: %1$s.', 'Tema ini membutuhkan plugin berikut: %1$s.' ), // %1$s = plugin name(s)
   'notice_can_install_recommended'   => _n_noop( 'Tema ini merekomendasikan plugin berikut: %1$s.', 'Tema ini merekomendasikan plugin berikut: %1$s.' ), // %1$s = plugin name(s)
   'notice_cannot_install'       => _n_noop( 'Maaf, tapi Anda tidak memiliki izin yang benar untuk menginstal plugin %s. Hubungi administrator situs ini untuk mendapatkan bantuan pada plugin diinstal.', 'Maaf, tapi Anda tidak memiliki izin yang benar untuk menginstal plugin %s. Hubungi administrator situs ini untuk mendapatkan bantuan pada plugin diinstal.' ), // %1$s = plugin name(s)
   'notice_can_activate_required'       => _n_noop( 'Berikut ini plugin yang diperlukan keadaan tidak aktif: %1$s.', 'Berikut ini plugin yang diperlukan keadaan tidak aktif: %1$s.' ), // %1$s = plugin name(s)
   'notice_can_activate_recommended'   => _n_noop( 'Berikut Plugin yang direkomendasikan saat ini tidak aktif: %1$s.', 'Berikut Plugin yang direkomendasikan saat ini tidak aktif: %1$s.' ), // %1$s = plugin name(s)
   'notice_cannot_activate'      => _n_noop( 'Maaf, tapi Anda tidak memiliki izin untuk mengaktifkan plugin %s ini. Hubungi administrator situs ini untuk mendapatkan bantuan pada plugin yang akan diaktifkan.', 'Maaf, tapi Anda tidak memiliki izin untuk mengaktifkan plugin %s ini. Hubungi administrator situs ini untuk mendapatkan bantuan pada plugin yang akan diaktifkan.' ), // %1$s = plugin name(s)
   'notice_ask_to_update'       => _n_noop( 'Berikut Plugin perlu diperbarui ke versi terbaru untuk memastikan kompatibilitas maksimum dengan tema ini: %1$s.', 'Berikut Plugin perlu diperbarui ke versi terbaru untuk memastikan kompatibilitas maksimum dengan tema ini: %1$s.' ), // %1$s = plugin name(s)
   'notice_cannot_update'       => _n_noop( 'Maaf, tapi Anda tidak memiliki izin untuk memperbarui plugin %s. Hubungi administrator situs ini untuk mendapatkan bantuan pada plugin yang akan diperbarui.', 'Maaf, tapi Anda tidak memiliki izin untuk memperbarui plugin %s. Hubungi administrator situs ini untuk mendapatkan bantuan pada plugin yang akan diperbarui.' ), // %1$s = plugin name(s)
   'install_link'           => _n_noop( 'Mulai Menginstal Plugin', 'Mulai Menginstal Plugin' ),
   'activate_link'          => _n_noop( 'Aktifkan Plugin', 'Aktifkan Plugin' ),
   'return'                              => __( 'Kembali ke Installer Plugin yang Diperlukan', $theme_text_domain ),
   'plugin_activated'                    => __( 'Pengaktifan Plugin telah berhasil', $theme_text_domain ),
   'complete'          => __( 'Semua plugin dipasang dan diaktifkan berhasil. %s', $theme_text_domain ), // %1$s = dashboard link
   'nag_type'         => 'updated' // Determines admin notice type - can only be 'updated' or 'error'
  )
 );

 tgmpa( $plugins, $config );

}
//End of top script

Selanjutnya unduh file php ini dan letakkan diluar folder/ directory pada themes, berikutnya Anda tinggal membuat folder plugin isikan file plugin yang sudah disiapkan/ dibutuhkan dan file dalam bentuk .zip (file yang sudah dicompress) sesuai dengan standart file plugin pada wordpress. Apabila plugin yang Anda setting lebih dari satu Anda tinggal edit script diatas dengan cara copy paste edit nama plugin, dan dibawah settingan tersebut ada script tambahan sebagai opsi lain yang load plugin langsung dari directory pengembang wordpress secara langsung.

Untuk lebih lanjut Anda bisa membaca artikel pada alamat ini: Thomas Griffin
dan Untuk update perkembangan tentang code ini bisa ke alamat ini: Github
Advertisement
Dalam pengembangan fungsi website terutama pada website yang berplatform cms wordpress tidak lepas dari peran fungsi daripada modul/ plugin, untuk membuat fungsi tambahan sesuai yang diinginkan pastinya. Memang ketika menggunakan cms wordpress dalam konstruksi sebuah website kita dipermudahkan dengan sistem bawaanya yang sudah terintegrasi dengan repository developer wordpress secara langsung/ otomatis, salah satu contohnya yaitu fitur didalamnya dalam bentuk plugin. Namun terkadang ketika kita membuat sistem baru tidak jarang kalau kita akan mengedit ulang plugin tersebut sesuai dengan keinginan kita. Disini akan dijelaskan untuk mensetting sebuah themes yang kita setting sendiri untuk mengharuskan install plugin dari bawaan themes tersebut secara otomatis dengan mengambil plugin yang sudah disiapkan dalam folder themes tersebut. Secara teknis ketika kita mengaktifkan/ upload themes yang sudah kita setting tersebut akan ada notice/ pemberitahuan untuk mengharuskan install plugin yang sifatnya bisa kita setting sendiri, baik itu berupa anjuran/ rekomendasi atau plugin yang harus diinstall kalau sifatnya primer kebutuhan themes tersebut.


Diatas merupakan salah satu contoh gambaran yang sudah selesai tahap pengembangan pada themes yang disetting dengan default plugin bawaannya.

Untuk memulainya, pada bawaan themes yang sudah ada Anda tinggal meletakkan code scripth yang ada seperti pada dibawah ini ke file function.php pada themes.

//requery plugin on themes //
/**
 * This file represents an example of the code that themes would use to register
 * the required plugins.
 *
 * It is expected that theme authors would copy and paste this code into their
 * functions.php file, and amend to suit.
 *
 * @package    TGM-Plugin-Activation
 * @subpackage Example
 * @version    2.3.6
 * @author    Thomas Griffin 
 * @author    Gary Jones 
 * @copyright  Copyright (c) 2012, Thomas Griffin
 * @license    http://opensource.org/licenses/gpl-2.0.php GPL v2 or later
 * @link       https://github.com/thomasgriffin/TGM-Plugin-Activation
 */

/**
 * Include the TGM_Plugin_Activation class.
 */
require_once dirname( __FILE__ ) . '/gb-plugin-activation.php';

add_action( 'tgmpa_register', 'my_theme_register_required_plugins' );
/**
 * Register the required plugins for this theme.
 *
 * In this example, we register two plugins - one included with the TGMPA library
 * and one from the .org repo.
 *
 * The variable passed to tgmpa_register_plugins() should be an array of plugin
 * arrays.
 *
 * This function is hooked into tgmpa_init, which is fired within the
 * TGM_Plugin_Activation class constructor.
 */
function my_theme_register_required_plugins() {

 /**
  * Array of plugin arrays. Required keys are name and slug.
  * If the source is NOT from the .org repo, then source is also required.
  */
 $plugins = array(

  // This is an example of how to include a plugin pre-packaged with a theme
  array(
   'name'         => 'Nama plugin', // The plugin name
   'slug'         => 'nama plugin', // The plugin slug (typically the folder name)
   'source'       => get_stylesheet_directory() . '/plugins/nama-plugin.zip', // The plugin source
   'required'     => true, // If false, the plugin is only 'recommended' instead of required
   'version'     => '', // E.g. 1.0.0. If set, the active plugin must be this version or higher, otherwise a notice is presented
   'force_activation'   => false, // If true, plugin is activated upon theme activation and cannot be deactivated until theme switch
   'force_deactivation'  => false, // If true, plugin is deactivated upon theme switch, useful for theme-specific plugins
   'external_url'    => '', // If set, overrides default API URL and points to an external URL
  ),
  
  // This is an example of how to include a plugin from the WordPress Plugin Repository
  array(
   'name'   => 'Wordpress Importer',
   'slug'   => 'wordpress-importer',
   'required'  => false,
  ),

 );

 // Change this to your theme text domain, used for internationalising strings
 $theme_text_domain = 'greenhouse';

 /**
  * Array of configuration settings. Amend each line as needed.
  * If you want the default strings to be available under your own theme domain,
  * leave the strings uncommented.
  * Some of the strings are added into a sprintf, so see the comments at the
  * end of each line for what each argument will be.
  */
 $config = array(
  'domain'         => $theme_text_domain,          // Text domain - likely want to be the same as your theme.
  'default_path'   => '',                          // Default absolute path to pre-packaged plugins
  'parent_menu_slug'  => 'themes.php',     // Default parent menu slug
  'parent_url_slug'  => 'themes.php',     // Default parent URL slug
  'menu'           => 'install-required-plugins',  // Menu slug
  'has_notices'       => true,                        // Show admin notices or not
  'is_automatic'     => false,         // Automatically activate plugins after installation or not
  'message'    => '',       // Message to output right before the plugins table
  'strings'        => array(
   'page_title'                          => __( 'Install Required Plugins', $theme_text_domain ),
   'menu_title'                          => __( 'Install Plugins', $theme_text_domain ),
   'installing'                          => __( 'Installing Plugin: %s', $theme_text_domain ), // %1$s = plugin name
   'oops'                                => __( 'Sesuatu yang tidak beres dengan plugin API.', $theme_text_domain ),
   'notice_can_install_required'        => _n_noop( 'Tema ini membutuhkan plugin berikut: %1$s.', 'Tema ini membutuhkan plugin berikut: %1$s.' ), // %1$s = plugin name(s)
   'notice_can_install_recommended'   => _n_noop( 'Tema ini merekomendasikan plugin berikut: %1$s.', 'Tema ini merekomendasikan plugin berikut: %1$s.' ), // %1$s = plugin name(s)
   'notice_cannot_install'       => _n_noop( 'Maaf, tapi Anda tidak memiliki izin yang benar untuk menginstal plugin %s. Hubungi administrator situs ini untuk mendapatkan bantuan pada plugin diinstal.', 'Maaf, tapi Anda tidak memiliki izin yang benar untuk menginstal plugin %s. Hubungi administrator situs ini untuk mendapatkan bantuan pada plugin diinstal.' ), // %1$s = plugin name(s)
   'notice_can_activate_required'       => _n_noop( 'Berikut ini plugin yang diperlukan keadaan tidak aktif: %1$s.', 'Berikut ini plugin yang diperlukan keadaan tidak aktif: %1$s.' ), // %1$s = plugin name(s)
   'notice_can_activate_recommended'   => _n_noop( 'Berikut Plugin yang direkomendasikan saat ini tidak aktif: %1$s.', 'Berikut Plugin yang direkomendasikan saat ini tidak aktif: %1$s.' ), // %1$s = plugin name(s)
   'notice_cannot_activate'      => _n_noop( 'Maaf, tapi Anda tidak memiliki izin untuk mengaktifkan plugin %s ini. Hubungi administrator situs ini untuk mendapatkan bantuan pada plugin yang akan diaktifkan.', 'Maaf, tapi Anda tidak memiliki izin untuk mengaktifkan plugin %s ini. Hubungi administrator situs ini untuk mendapatkan bantuan pada plugin yang akan diaktifkan.' ), // %1$s = plugin name(s)
   'notice_ask_to_update'       => _n_noop( 'Berikut Plugin perlu diperbarui ke versi terbaru untuk memastikan kompatibilitas maksimum dengan tema ini: %1$s.', 'Berikut Plugin perlu diperbarui ke versi terbaru untuk memastikan kompatibilitas maksimum dengan tema ini: %1$s.' ), // %1$s = plugin name(s)
   'notice_cannot_update'       => _n_noop( 'Maaf, tapi Anda tidak memiliki izin untuk memperbarui plugin %s. Hubungi administrator situs ini untuk mendapatkan bantuan pada plugin yang akan diperbarui.', 'Maaf, tapi Anda tidak memiliki izin untuk memperbarui plugin %s. Hubungi administrator situs ini untuk mendapatkan bantuan pada plugin yang akan diperbarui.' ), // %1$s = plugin name(s)
   'install_link'           => _n_noop( 'Mulai Menginstal Plugin', 'Mulai Menginstal Plugin' ),
   'activate_link'          => _n_noop( 'Aktifkan Plugin', 'Aktifkan Plugin' ),
   'return'                              => __( 'Kembali ke Installer Plugin yang Diperlukan', $theme_text_domain ),
   'plugin_activated'                    => __( 'Pengaktifan Plugin telah berhasil', $theme_text_domain ),
   'complete'          => __( 'Semua plugin dipasang dan diaktifkan berhasil. %s', $theme_text_domain ), // %1$s = dashboard link
   'nag_type'         => 'updated' // Determines admin notice type - can only be 'updated' or 'error'
  )
 );

 tgmpa( $plugins, $config );

}
//End of top script

Selanjutnya unduh file php ini dan letakkan diluar folder/ directory pada themes, berikutnya Anda tinggal membuat folder plugin isikan file plugin yang sudah disiapkan/ dibutuhkan dan file dalam bentuk .zip (file yang sudah dicompress) sesuai dengan standart file plugin pada wordpress. Apabila plugin yang Anda setting lebih dari satu Anda tinggal edit script diatas dengan cara copy paste edit nama plugin, dan dibawah settingan tersebut ada script tambahan sebagai opsi lain yang load plugin langsung dari directory pengembang wordpress secara langsung.

Untuk lebih lanjut Anda bisa membaca artikel pada alamat ini: Thomas Griffin
dan Untuk update perkembangan tentang code ini bisa ke alamat ini: Github
 

Start typing and press Enter to search