This tutorial applies to users running both Job Manager Resumes and WC Paid Listings and lets you restrict access to the resumes portion of your site to users with an active job package only.


Configure Resume Access

The first step is to configure resumes for capability based access. Go to Resumes > Settings > Resume Visibility and for each permission enter ‘has_active_job_package’.

Update Resume Visibility


Add a snippet

Use code snippet below into theme functions.php file, or even better, with a plugin such as Code Snippets.

// Hook into user_has_cap filter. This assumes you have setup resumes to require the capability 'has_active_job_package'
add_filter( 'user_has_cap', 'has_active_job_package_capability_check', 10, 3 );

/**
* has_active_job_package_capability_check()
*
* Filter on the current_user_can() function.
*
* @param array $allcaps All the capabilities of the user
* @param array $cap [0] Required capability
* @param array $args [0] Requested capability
* [1] User ID
* [2] Associated object ID
*/
function has_active_job_package_capability_check( $allcaps, $cap, $args ) {
// Only interested in has_active_job_package
if ( empty( $cap[0] ) || $cap[0] !== 'has_active_job_package' || ! function_exists( 'wc_paid_listings_get_user_packages' ) ) {
return $allcaps;
}

$user_id = $args[1];
$packages = wc_paid_listings_get_user_packages( $user_id, 'job_listing' );

// Has active package
if ( is_array( $packages ) && sizeof( $packages ) > 0 ) {
$allcaps[ $cap[0] ] = true;
}

return $allcaps;
}

What does it do? When WordPress checks if the user has the correct capability to view resumes, it checks the users packages. If they have a package, they are given the capability dynamically.