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 从常规管理列表中隐藏某些页面(分配了系统页面类别的页面)