To use this code, pop index.php and searchwp-members.php into a directory named searchwp-members,
zip it up with zip -r searchwp-members.zip searchwp-members
, and install the zip file in wordpress.
It works with ajax live search also.
<?php | |
// Silence is golden... |
<?php | |
/* | |
Plugin Name: SearchWP Members Integration | |
Plugin URI: https://searchwp.com/ | |
Description: Integrate SearchWP and PrivateContent | |
Version: 1.0 | |
Author: Mike Dacre | |
Author: Jonathan Christopher | |
Author URI: https://searchwp.com/ | |
This program is free software; you can redistribute it and/or | |
modify it under the terms of the GNU General Public License | |
as published by the Free Software Foundation; either version 2 | |
of the License, or (at your option) any later version. | |
This program is distributed in the hope that it will be useful, | |
but WITHOUT ANY WARRANTY; without even the implied warranty of | |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
GNU General Public License for more details. | |
You should have received a copy of the GNU General Public License | |
along with this program; if not, see <http://www.gnu.org/licenses/>. | |
*/ | |
// exit if accessed directly | |
if ( ! defined( 'ABSPATH' ) ) { | |
exit; | |
} | |
if ( ! defined( 'SEARCHWP_MEMBERS_VERSION' ) ) { | |
define( 'SEARCHWP_MEMBERS', '1.0' ); | |
} | |
class SearchWP_Members { | |
function __construct() { | |
add_action( 'searchwp_indexer_pre', array( $this, 'indexer_pre' ) ); | |
add_filter( 'searchwp_include', array( $this, 'wp_members_searchwp_exclude' ), 10, 3 ); | |
} | |
function indexer_pre() { | |
remove_filter( 'pre_get_posts', 'pg_query_filter', 999 ); | |
} | |
function wp_members_searchwp_exclude( $ids, $engine, $terms ) { | |
$args = array( | |
'post_type' => 'any', | |
'post_status' => 'any', | |
'nopaging' => true, | |
'fields' => 'ids', | |
); | |
$all_post_ids = get_posts( $args ); | |
$wp_members_exclude_ids = array(); | |
foreach ( $all_post_ids as $post_id ): | |
if ( ! members_can_current_user_view_post( $post_id ) ) : | |
$wp_members_exclude_ids[] = $post_id; | |
endif; | |
endforeach; | |
if ( ! empty( $wp_members_exclude_ids ) ) { | |
$ids = array_merge( $ids, $wp_members_exclude_ids ); | |
$ids = array_map( 'absint', $ids ); | |
$ids = array_unique( $ids ); | |
} | |
return $ids; | |
} | |
} | |
new SearchWP_Members(); |