Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function add_restricting_access_meta_boxes( $post_type ) {
- $post_types = array('post', 'page'); // Типы постов, к которым будет добавлен блок
- if(in_array( $post_type, $post_types )) {
- add_meta_box(
- 'restricting_access'
- ,'Ограничение доступа'
- ,'render_restricting_access_meta_box' // Функция, которая выводит на экран HTML содержание блока
- ,$post_type
- ,'side'
- ,'low'
- );
- }
- }
- add_action( 'add_meta_boxes', 'add_restricting_access_meta_boxes'); // Регистрируем хук-событие отображения
- function save_restricting_access_post( $post_id ) {
- // Проверяем установлен ли nonce.
- if ( ! isset( $_POST['restricting_access_inner_custom_box_nonce'] ) )
- return $post_id;
- $nonce = $_POST['restricting_access_inner_custom_box_nonce'];
- // Проверяем корректен ли nonce.
- if ( ! wp_verify_nonce( $nonce, 'restricting_access_inner_custom_box' ) )
- return $post_id;
- // Если это автосохранение ничего не делаем.
- if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
- return $post_id;
- // Проверяем права пользователя.
- if ( 'page' == $_POST['post_type'] ) {
- if ( ! current_user_can( 'edit_page', $post_id ) )
- return $post_id;
- } else {
- if ( ! current_user_can( 'edit_post', $post_id ) )
- return $post_id;
- }
- $data = is_array($_POST['meta_field_restricting_access'])?$_POST['meta_field_restricting_access']:array();
- // Обновляем данные.
- update_post_meta( $post_id, 'meta_restricting_access', $data );
- }
- add_action( 'save_post', 'save_restricting_access_post'); // Регистрируем хук-событие сохранения
- function render_restricting_access_meta_box( $post ) {
- // Добавляем nonce поле, которое будем проверять при сохранении.
- wp_nonce_field( 'restricting_access_inner_custom_box', 'restricting_access_inner_custom_box_nonce' );
- // Получаем существующие данные из базы данных.
- $value = get_post_meta( $post->ID, 'meta_restricting_access' );
- // Формируем список ролей.
- $html = '<div id="meta_restricting_access">';
- global $wp_roles;
- if (!isset($wp_roles)) $wp_roles = new WP_Roles();
- foreach($wp_roles->get_names() as $key=>$name) {
- $checked = in_array($key,$value[0])?'checked':'';
- $html .= '<label for="meta_field_restricting_access_'.$key.'"><input type="checkbox" id="meta_field_restricting_access_'.$key.'" name="meta_field_restricting_access[]" value="'.$key.'" '.$checked.' />'.$name.'</label><br />';
- }
- $html .= '</div>';
- // Добавляем кнопку быстрого переключения чекбоксов.
- $html .= '
- <br/><a href="#" id="meta_restricting_access_switch">Переключить</a>
- <script>
- jQuery(document).ready( function() {
- jQuery("#meta_restricting_access_switch").on("click", function() {
- jQuery("#meta_restricting_access input").click();
- return false;
- });
- });
- </script>
- ';
- echo $html;
- }
Advertisement
Add Comment
Please, Sign In to add comment