Search blog

Monday, February 5, 2018

[SOLVED]-Restrict Access to BuddyPress & bbPress Pages Without Using Any Plugins

If you would like to restrict access to specific page(s) of your Buddypress/bbPress site such as Groups, Forum or Member page from non-logged-in/guest users without using any plugins then use the solution below.

First, I recommend, you make use of this wonderful plugin called Code Snippets. Please read the description provided in its plugin page to know about its numerous benefit compared to pasting codes in your theme's 'function.php' file or 'bp-custom.php' file.

>> Solution 1: Restrict Access to all BuddyPress & bbPress pages


The code below will redirect all non-logged-in/guest users to your site's Registration page whenever they try to access a Buddypress/bbPress page such as Group, Forum, Member Page, Profile page etc

 /**  
 * Redirect buddypress and bbpress pages to registration page
 */  
 function bp_redirect_pages()
 {  
   //if not logged in and on a bp page except registration or activation
   if( !is_user_logged_in() &&
     ( ( !bp_is_blog_page() && !bp_is_activation_page() && !bp_is_register_page() ) || is_bbpress() ) 
   )  
   {  
     wp_redirect( home_url( '/register/' ) );
     exit();  
   }  
 }  
 add_action( 'template_redirect', 'bp_redirect_pages' );

What the code above does is, it first checks whether a user trying to access a bp-page is logged in or not AND whether that bp-page is a BuddyPress blog page or a BuddyPress activation page, Profile page etc or NOT (! represents NOT in PHP), and if it is not any of the aforementioned BuddyPress pages, it will then redirect the guest user to your site's registration page.

You can replace 'register' with the slug of any page you would like the user to be redirected to. Suppose, you would like a non-logged-in/guest user to be redirected to your login page then replace 'register' with 'login'.

>> Solution 2: Restrict Access to Only Member's Directory & profile page


This was the solution I required for my site and sharing the same with you all below.

 /**  
 * Redirect non-logged-in/guest user to registration page while trying to access Member's directory or BP-Profile page  
 */  
 function bp_redirect_pages()  
 {  
  // Gets the URL for the page the user is trying to access
  $url = $_SERVER['REQUEST_URI'];
  // Breaks down the above URL into its parts and "news"
  $explode_url = explode("/", $url);
  //if not logged in and on a bp page except registration or activation
  if( !is_user_logged_in() &&
       ( bp_is_members_component() || bp_is_user() || in_array("members", $explode_url) )
       )
  {
      wp_redirect( home_url( '/register/' ) );
      exit();
  }  
 }  
 add_action( 'template_redirect', 'bp_redirect_pages' );

In the above code, what we’re saying is that:

 - If a user is not logged in;
 - && (equivalent to AND) one of a number of types of pages are being loaded viz. 'bp_is_members_component()', 'bp_is_user()' etc
- Then redirect to the registration page

The three things to note in the Solution 2 are:

1. $url defines a variable that saves the url the user is trying to access;

2. $explode_url is an array variable that contains a break down of the above url parts, so “bbc.co.uk/news/” would be broken down into “bbc.co.uk” and “news”;

3. And in the last portion, where I use in_array() I set some new criteria for what pages to block.

Here are the basics to this argument so you can decide what will work for you:
in_array("members", $explode_url) checks for “members” in $explode_url. So, let’s say I’m accessing a site http://gulfnepal.com and want to view http://gulfnepal.com/members/1 Because “members” is in the URL, the function will block access to this page for non-logged-in users and redirect them to the registration page.

In short, whatever is between the first set of quotation marks in the in_array("xxxx", $explode_url) argument will be tested against $explode_url, and if found the page will be blocked. In the second, I’m preventing non-logged in users accessing pages that include “members”. You can check your own site and see what terms would work best. Also, a variation of this method can be used to restrict access to categories of pages. Look at in_category( array( xx, xx ) ) argument.

Please go through the following two articles that I referred to while building the above solutions. You can come up with more solutions as per your requirement from them:

Tuesday, January 30, 2018

[SOLVED]-Access Wordpress Backend/Admin Login Page Even If Restricted by Custom Code

If you would like to access your Backend/Admin Login page, in spite of creating a redirection with some custom code/snippets, you can use the URL below to do that:
 http://example.com/wp-login.php?redirect_to=&reauth=1  

Friday, January 26, 2018

[SOLVED] - Remove/Fix Broken tlp-rdw Packages

While trying to Update/Upgrade your Ubuntu system, if you have been running into errors as below:

 Preparing to unpack .../tlp-rdw_1.1-1~trusty_all.deb ...  
 dpkg-maintscript-helper: error: last version is missing  
 dpkg: error processing archive /var/cache/apt/archives/tlp-rdw_1.1-1~trusty_all.deb (--unpack):  
  subprocess new pre-installation script returned error exit status 1  
 dpkg-maintscript-helper: error: last version is missing  
 dpkg: error while cleaning up:  
  subprocess new post-removal script returned error exit status 1  
 Errors were encountered while processing:  
  /var/cache/apt/archives/tlp-rdw_1.1-1~trusty_all.deb  
 E: Sub-process /usr/bin/dpkg returned an error code (1)  

And would like to remove the broken tlp-rdw packages, you can try the solution below. First open your terminal (CTRL+ALT+T) and enter the following command:

 sudo dpkg --remove --force-remove-reinstreq tlp tlp-rdw  

After running the above command you might get a warning message suggesting you run the purge command. To run purge enter the command below:

 sudo apt-get purge tlp tlp-rdw  

Please visit this link if you would like to know about TLP in detail: http://bit.ly/2ncwA3Y

Sunday, January 7, 2018

[Solved] - Unbrick Lenovo A7700 & Other MTK Based Phones

>> Download Links:
If you have bricked your Lenovo A7700 phone or any other MTK based Android phone then follow the tutorial below to unbrick it.

There are two types of bricked condition:
  • Soft bricked
  • Hard bricked
Soft brick occurs due to certain software errors and should usually be fixed by just performing a factory reset.

Hard brick occurs due to hardware malfunction. Actually, a hard brick device is the real "bricked/dead" and cannot be unbricked. In this case the phone doesn't turn on at all and is equal to a brick, rendering it useless.

Not sure what I should call my bricked phone. No matter what techniques I tried it wouldn't start at all. Applying the fix below worked for me.

Step 1: Open SP Flash tool. If you do not know how to use it and would like to learn, please check the following link: http://bit.ly/2CHMPPR.

Click on image to enlarge
 Step 2: As shown in the image above, select 'Format all+Download.'

Step 3:  Press Volume Down button or if Volume Down doesn't work try Volume up and connect your phone to your computer using a USB data cable. Now your Unbricking process should start, as shown in the video below.



N.B: This will result in deletion of your IMEI number(s). But nothing to worry about; later on you can easily set the IMEI number. You can follow this tutorial for resetting your IMEI number.

Top 5 Posts (Weekly)