这些年有很多客户会找我们做一个功能,就是利用erphpdown插件的VIP功能,隐藏一些文章(文章发布后不会出现在网站里,就算用户知道文章链接点进去也是提示404),但是只要开通了VIP,就可以看到文章了。这个功能对于一些内部保密资料站还是比较不错的,今天模板兔给大家提供一下相关代码:
add_action( 'pre_get_posts', 'mbt_hidden_posts_in_queries' );
function mbt_hidden_posts_in_queries( $query ) {
global $current_user;
$userType = 0;
if(function_exists('getUsreMemberType')){
$userType=getUsreMemberType();
}
if( !is_admin() && !$userType) {
if ( $query->is_home() || $query->is_front_page() || $query->is_search() || $query->is_category() || $query->is_tag() || $query->is_archive() || $query->is_author() || $query->is_date()) {
$post_hidden = mbt_hidden_post_database_query( "is_hidden" , "1" );
$query->set('post__not_in', $post_hidden);
}
}
}
add_action( 'template_redirect', 'mbt_redirect_hidden_single_to_404' );
function mbt_redirect_hidden_single_to_404() {
if ( ! is_singular() || is_admin() ) {
return;
}
global $post,$current_user;
$is_hidden = get_post_meta( $post->ID, 'is_hidden', true );
if ( function_exists('getUsreMemberTypeById') && getUsreMemberTypeById($current_user->ID) ) {
return;
}
if ( $is_hidden ) {
global $wp_query;
$wp_query->set_404();
status_header( 404 );
nocache_headers();
}
}
function mbt_hidden_post_database_query( $meta_key , $meta_value ) {
global $wpdb, $current_user;
$post_ids = array();$array_intersect = array();$post_ids1 = array();
$erphp_hide_query = $wpdb->get_results("select post_id from $wpdb->postmeta where meta_key='".$meta_key."' AND meta_value = '".$meta_value."'" );
foreach($erphp_hide_query as $item){
$post_ids1[] = $item->post_id;
}
//$array_intersect = array_intersect($post_ids1, $post_ids2);//取合集
foreach( $post_ids1 as $erphp_hide_val ) {
$post_ids[] = $erphp_hide_val;
}
return $post_ids;
}
以上代码基于erphpdown插件的VIP功能,可以让一些常见页面的文章列表里看不到指定文章,当然以上只是一些核心代码,其他辅助代码请自行写哦。
我们的modown主题将支持这个功能~


0 个评论