Setting up WordPress VIP Development Environment with Easy Engine (nginx)

Hey there,

As you know VIP quick start has been deprecated recently. Here is some easy way to get started with VIP development, We hope soon EasyEngine will V4 launch with VIP support but for now, let’s do all thing manually.

You need Ubuntu 14 / 16 LTS with sudo access also we need svn and git installed.

For starter let’s install easy engine if you don‚Äôt already have one open terminal

wget -qO ee rt.cx/ee && sudo bash ee # install easyengine

Next step create a multisite

ee site create example.com --wpsubdom

save username and password somewhere for safe keeping, We are ready with the initial setup for VIP now let’s make site real VIP ūüėČ
The user www-data has the write access to /var/www/ folder so let’s switch user with the following command

sudo -su www-data

Go to htdocs folder with

cd /var/www/example.com/htdocs/

Let’s add VIP Plugins and Helper files

svn co https://vip-svn.wordpress.com/plugins/ wp-content/themes/vip/plugins

For next step lets install some mu-plugins

git clone --recursive https://github.com/automattic/vip-wpcom-mu-plugins wp-content/mu-plugins

these repos should be updated daily with svn up and git pull

If you have a theme ready for project lets put that in wp-content/themes/vip/{your-theme}. If you don’t have theme ready right now lets put one of WordPress default theme to VIP directory by simply moving that to VIP directory

mv wp-content/themes/twentysixteen/ wp-content/themes/vip/twentysixteen

Now let’s include vip-init.php to themes functions.php at the beginning of the file and check it by loading facebook instant article plugin.


require_once WP_CONTENT_DIR . '/themes/vip/plugins/vip-init.php';
wpcom_vip_load_plugin( 'facebook-instant-articles', 'plugins','3.3' );

Now visit http://example.com/wp-admin/ and log in by username and password generated and go to Dashboard and activate theme in which you added vip-init.php

We are done!

Please let me know your thoughts in comments

WordPress redirect user with role

WordPress has many users roles, you can redirect particular users by role with following function

<?php

function redirect_user_on_role()
 {

 // retrieve current user info

 global $current_user;
 get_currentuserinfo();

 // If login user role is Subscriber

 if ($current_user->user_level == 0)
 {
 wp_redirect(esc_url(get_permalink(get_page_by_title('Perticluar Page By Name'))));
 exit;
 }

 // If login user role is Contributor

   else
 if ($current_user ->user_level > 1)
 {
 wp_redirect(home_url());
 exit;
 }

 // If login user role is Editor

   else
 if ($current_user ->user_level > 8)
 {
 wp_redirect(home_url());
 exit;
 }

 //For other roles
  else
 {
   $redirect_to = 'http://google.com/';
   return $redirect_to;
 }
 }

add_action('admin_init', 'redirect_user_on_role');

Continue reading WordPress redirect user with role

WordPress Plugin Template redirect custom post, page, taxonomy

Here is example of how we can redirect to custom templates in wordpress plugin with page name, custom post type, custom taxonomies etc 

 

<?php
add_action("template_redirect", 'my_theme_redirect');

function my_theme_redirect()
 {
 global $wp;
 $plugindir = dirname(__FILE__);

 // A Specific page by title / name

 if ($wp->query_vars["pagename"] == 'agenda')
 {
 $templatefilename = 'page-event-list.php';
 if (file_exists(TEMPLATEPATH . '/' . $templatefilename))
 {
 $return_template = TEMPLATEPATH . '/' . $templatefilename;
 }
   else
 {
 $return_template = $plugindir . '/templates/' . $templatefilename;
 }

 do_theme_redirect($return_template);
 }

 // A Specific Custom Post Type

 if ($wp->query_vars["post_type"] == 'events')
 {
 $templatefilename = 'single-event.php';
 if (file_exists(TEMPLATEPATH . '/' . $templatefilename))
 {
 $return_template = TEMPLATEPATH . '/' . $templatefilename;
 }
   else
 {
 $return_template = $plugindir . '/templates/' . $templatefilename;
 }

 dmk_redirect_to_login_if_not_logged_in();
 do_theme_redirect($return_template);

 // A Custom Taxonomy Page

 }
 elseif ($wp->query_vars["taxonomy"] || is_tax('location') == 'location')
 {
 $templatefilename = 'taxonomy-event_location.php';
 if (file_exists(TEMPLATEPATH . '/' . $templatefilename))
 {
 $return_template = TEMPLATEPATH . '/' . $templatefilename;
 }
   else
 {
 $return_template = $plugindir . '/templates/' . $templatefilename;
 }

 do_theme_redirect($return_template);
 }
 }

// Function includes file and does redirection

function do_theme_redirect($url)
 {
 global $post, $wp_query;
 if (have_posts())
 {
 include ($url);

 die();
 }
   else
 {
 $wp_query->is_404 = true;
 }
 }

WordPress bypass sanitize filter for post insert

I found solution for wordpress 3.6 and just want to share here
filter had to be unset due to security problems with it. You could try doing kses_remove_filters() before inserting the post and kses_init_filters() after inserting the post if you are trying to avoid the kses filtering of the post fields. Just be wary since that defeats most of the security measures for inserting posts.

kses_remove_filters(); // remove filter
wp_insert_post($args); //insert post
kses_init_filters(); // put back filter