php 从WP管理员隐藏某些页面(基于ACF /自定义字段)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 从WP管理员隐藏某些页面(基于ACF /自定义字段)相关的知识,希望对你有一定的参考价值。
// Hide certain pages (ones with a field assigned) from the general admin listing
function theme_hide_meta_system_pages($query) {
if (
is_admin() &&
!empty( $_GET['post_type'] ) &&
$_GET['post_type'] == 'page' &&
$query->query['post_type'] == 'page'
) {
if (!isset($_GET['page_is_system']) || $_GET['page_is_system'] == '0') {
$query->set('meta_query', array(
'relation' => 'OR',
// set to 0
array(
'key' => 'page_is_system',
'value' => '1',
'compare' => '!='
),
// does not exist
array(
'key' => 'page_is_system',
'compare' => 'NOT EXISTS',
'value' => ''
)
));
} else {
$query->set('meta_query', array(
// set to 1
array(
'key' => 'page_is_system',
'value' => '1',
'compare' => '='
),
));
}
}
}
add_action('pre_get_posts', 'theme_hide_meta_system_pages');
function theme_add_meta_system_pages_queryvar($vars) {
$vars[] = 'page_is_system';
return $vars;
}
add_filter( 'query_vars', 'theme_add_meta_system_pages_queryvar' );
// Add system pages to quick links in the admin listing
function theme_add_meta_system_pages_to_quick_links($views) {
if ((is_admin()) && ($_GET['post_type'] == 'page')) {
global $wp_query;
$class = (isset($wp_query->query_vars['page_is_system']) && $wp_query->query_vars['page_is_system'] == '1') ? ' class="current"' : '';
$views['system'] = '<a href="' . admin_url('edit.php?post_type=page&page_is_system=1') . '" ' . $class . '>' . __('System pages','domain') . '</a>';
return $views;
}
}
add_filter('views_edit-page', 'theme_add_meta_system_pages_to_quick_links');
acf_add_local_field_group(array (
'key' => 'group_ujq7wrdtwyldi',
'title' => __('System settings','domain'),
'fields' => array (
array (
'key' => 'field_sf9o6xmozloau',
'label' => __('Hide this page for non admins?','domain'),
'name' => 'page_is_system',
'type' => 'true_false',
'instructions' => '',
'required' => 0,
'conditional_logic' => 0,
'wrapper' => array (
'width' => '',
'class' => '',
'id' => '',
),
'message' => '',
'default_value' => 0,
'ui' => 1,
'ui_on_text' => '',
'ui_off_text' => '',
),
),
'location' => array (
array (
array (
'param' => 'post_type',
'operator' => '==',
'value' => 'page',
),
array (
'param' => 'user_role',
'operator' => '==',
'value' => 'administrator',
),
),
),
'menu_order' => 0,
'position' => 'normal',
'style' => 'default',
'label_placement' => 'top',
'instruction_placement' => 'label',
'hide_on_screen' => '',
'active' => 1,
'description' => '',
));
以上是关于php 从WP管理员隐藏某些页面(基于ACF /自定义字段)的主要内容,如果未能解决你的问题,请参考以下文章
php 使用ACF选项页面的WP全局自定义字段
查询ACF在自定义分类模板中的WP_Query期间发布对象
php 适用于wp-admin的ACF自定义选项菜单
隐藏或排除前端表单中的 ACF 字段并存储默认值
在自定义分类模板中的 WP_Query 期间查询(2)ACF 发布对象
php 从常规管理列表中隐藏某些页面(分配了系统页面类别的页面)