• Как в Wordpress запретить оставлять комментарии под зарегистрированными именами пользователей?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    запрещаем Ваську:
    add_action('init','vab_commentdata_chek');function vab_commentdata_chek($commentdata){	
    		if(isset($_POST['author'])&&$_POST['author']=='Вася'){wp_die(__('Ты отфильтрован!','VAB'));}
    	return $commentdata;}

    зарегистрированные пользователи из базы:
    add_action('init','vab_commentdata_chek');function vab_commentdata_chek($commentdata){
    $users=get_users();
    foreach($users as $q){
    	if(isset($_POST['author'])&&$_POST['author']==get_the_author_meta('display_name',$q->ID)){wp_die(__('Ты отфильтрован!','VAB'));}
    }
    	return $commentdata;}

    зарегистрированные пользователи из базы и Жорик:
    add_action('init','vab_commentdata_chek');function vab_commentdata_chek($commentdata){
    $users=get_users();
    foreach($users as $q){
    	if(isset($_POST['author'])&&$_POST['author']==get_the_author_meta('display_name',$q->ID)){wp_die(__('Ты отфильтрован!','VAB'));}
    }
    	if(isset($_POST['author'])&&$_POST['author']=='Жорик'){wp_die(__('Ты отфильтрован!','VAB'));}		
    	return $commentdata;}

    посмотреть массив:
    $users=get_users();
    foreach($users as $q){
    	echo get_the_author_meta('display_name',$q->ID).'<br />';
    }

    погуглите get_users и get_the_author_meta, если остались вопросы
    Ответ написан
    6 комментариев
  • Как добавить постраничную навигацию?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    примерно так:
    добавил 2 параметра posts_per_page и paged в самом начале
    $args = array(
    	'posts_per_page' => 4,//сколько записей на одной странице?
    	'paged'    => (get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1),//текущий номер страницы
      'numberposts'      => 10,
      'offset'           => 0,
      'category'         => 0,
      'orderby'          => 'post_date',
      'order'            => 'DESC',
      'include'          => '',
      'exclude'          => '',
      'meta_key'         => '',
      'meta_value'       => '',
      'post_type'        => 'post',
      'post_status'      => 'draft, publish, future, pending, private',
      'suppress_filters' => true,
    ); 
    
    $result = wp_get_recent_posts( $args );
    foreach( $result as $post ){
      setup_postdata( $post );
      the_title(); // вывод
    }
    wp_reset_postdata();
    //добавляем либо свою пагинацию,
    //либо the_posts_pagination();
    //либо the_posts_navigation();
    //либо echo paginate_links();


    можно определить параметры для paginate_links():
    $param=array(
      'base'               => '%_%',
      'format'             => '?paged=%#%',
      'total'              => 5,
      'current'            => 2,
      'show_all'           => false,
      'end_size'           => 1,
      'mid_size'           => 2,
      'prev_next'          => true,
      'prev_text'          => __('« Previous'),
      'next_text'          => __('Next »'),
      'type'               => 'plain',
      'add_args'           => false,
      'add_fragment'       => '',
      'before_page_number' => '',
      'after_page_number'  => ''
    );
    echo paginate_links($param);
    Ответ написан
    1 комментарий
  • Как в wp сделать ограничение по выводу постов в блоге?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    5db3e582cbd66271892989.jpeg
    если у Вас свой какой-то цикл, то в параметрах posts_per_page указываем число
    например:
    $params=array('posts_per_page'=>4,'post_type'=>$PostsType,'paged'=>$current_page);
    	$query=new WP_Query($params);

    или это какая-то переменная, например $VAB_Num, в которой какое-то число
    $params=array('posts_per_page'=>$VAB_Num,'post_type'=>$PostsType,'paged'=>$current_page);
    	$query=new WP_Query($params);
    Ответ написан
    Комментировать
  • Как в wp_customizer редактировать стандартный control?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    add_action('customize_register','action_customize_register');
    if(!function_exists('action_customize_register')){function action_customize_register($customizer){	
    $customizer->get_control('custom_logo')->label=__('Меняем название опции',"VAB");
    $customizer->get_control('custom_logo')->section='colors';//отправляем в секцию цвета
    }}
    Ответ написан
    Комментировать
  • Как подключить Alpha Color Picker Customizer Control?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    создаете класс:
    spoiler
    if(class_exists('WP_Customize_Control')){
    	class Alpha_Color_Control extends WP_Customize_Control{
    		public $attributes="";
    		public $defaultPalette=array('#000000','#ffffff','#dd3333','#dd9933','#eeee22','#81d742','#1e73be','#8224e3',);
    		public function __construct($manager,$id,$args=array(),$options=array()){
    			parent::__construct($manager,$id,$args);
    			$this->attributes.='data-default-color="'.esc_attr($this->settings['default']->default).'"';
    			$this->attributes.='data-alpha="true"';
    			$this->attributes.='data-reset-alpha="'.(isset($this->input_attrs['resetalpha'])?$this->input_attrs['resetalpha']:'true').'"';
    			$this->attributes.='data-custom-width="0"';}
    		public function enqueue(){wp_enqueue_script('alpha',get_template_directory_uri().'/VAB_libs/VAB_functions/js/alpha_color.js',array('wp-color-picker'),'1.0',true);}
    		public function to_json(){
    			parent::to_json();
    			$this->json['colorpickerpalette']=isset($this->input_attrs['palette'])?$this->input_attrs['palette']:$this->defaultPalette;
    		}
    		public function render_content(){?>
    			<div class="wpcolorpicker_alpha_color_control">
    				<?php if(!empty($this->label)){?>
    					<span class="customize-control-title"><?php echo esc_html($this->label);?></span>
    				<?php }
    				if(!empty($this->description)){?>
    					<span class="customize-control-description"><?php echo esc_html($this->description);?></span>
    				<?php }?>
    				<input type="text" class="color-picker" id="<?php echo esc_attr($this->id);?>" name="<?php echo esc_attr($this->id);?>" value="<?php echo esc_attr($this->value());?>" class="customize-control-colorpicker-alpha-color" <?php echo $this->attributes;?> <?php $this->link();?> />
    			</div><?php	}}}

    в коде замените адрес на свой, смотря куда файл в теме кинете (файл скину ниже)
    public function enqueue(){wp_enqueue_script('alpha',get_template_directory_uri().'/VAB_libs/VAB_functions/js/wp-color-picker-alpha.js',array('wp-color-picker'),'1.0',true);}

    далее код в кастомайзер:
    spoiler
    add_action('customize_register','action_customize_register');
    if(!function_exists('action_customize_register')){function action_customize_register($customizer){
    	$customizer->add_setting('VAB_alpha_color',array('default'=>'rgba(209,0,55,0.7)',)); 
    	$customizer->add_control(new Alpha_Color_Control($customizer,'VAB_alpha_color',
    		 array(
    				'label'=>__('Альфа колор пикер','VAB'),
    				'description'=>esc_html__('Описание','VAB'),
    				'section'=>'title_tagline',
    				'input_attrs'=>array('palette'=>array('#000000','#ffffff','#dd3333','#dd9933','#eeee22','#81d742','#1e73be','#8224e3',)),)
    	));
    }}

    пример вывода:
    echo '<div style="background:'.get_theme_mod('VAB_alpha_color').';">VAB_alpha_color</div>';

    исходники
    результат:
    spoiler

    5db1e278c9c6d148764481.jpeg
    5db1e2838917b283373257.jpeg


    заменил в классе атрибут значения по умолчанию при сбросе, иначе сбрасывает на начальное значение текущей сессии.
    spoiler
    строку:
    $this->attributes.='data-default-color="'.esc_attr($this->value()).'"';

    поменял на:
    $this->attributes.='data-default-color="'.esc_attr($this->settings['default']->default).'"';
    Ответ написан
  • Как создать дополнительную страницу в админке WP?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    создаем страницу (подменю/submenu):
    add_action('admin_menu','VAB_add_Menu');
    if(!function_exists('VAB_add_Menu')){
    	function VAB_add_Menu(){	
    	add_submenu_page(NULL,__('Версия PHP','VAB'),__('Версия PHP','VAB'),'manage_options','VAB_PHP_INFO','VAB_PHP_INFO');
    }}

    содержимое страницы:
    if(!function_exists('VAB_PHP_INFO')){function VAB_PHP_INFO(){
    	echo "<style type=\"text/css\">#adminmenuwrap{display:none;}#adminmenuback{width:0px;}#wpcontent{margin-left:-20px;}td h1{padding:21px 0px 0px 0px;}</style>";phpinfo();
    	}}

    ссылка на страницу:
    <a href="<?echo admin_url('admin.php?page=VAB_PHP_INFO');?>">VAB_PHP_INFO</a>

    результат перехода по ссылке:
    5daeb38b9c9f6027561511.jpeg
    Ответ написан
    Комментировать
  • Как установить шаблон записи по-умолчанию?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    например так:
    add_filter('template_include','VABch_include');
    if(!function_exists('VABch_include')):function VABch_include($path){
    	if(is_singular('post')){
    		return get_stylesheet_directory().'/single-VAB.php';
    		}
    return $path;}endif;

    if(is_singular('post')){скорректируйте данное условие под себя. Если оставить так, то все обычные записи будут выводится через шаблон single-VAB.php в корне темы. single-VAB.php то же на свой шаблон замените
    Ответ написан
    Комментировать
  • Как полностью выпилить консоль в WP?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    например так:
    add_action('init','blockusers_init');
    function blockusers_init(){
    if(!current_user_can('administrator')){show_admin_bar(false);}
    if(is_admin()&&!current_user_can('administrator')&&!(defined('DOING_AJAX')&&DOING_AJAX)){
    wp_redirect(home_url());
    exit;
    }}

    можно так же вместо администратора указать права доступа типо:
    вместо current_user_can('administrator') пишем current_user_can('manage_options')
    плюс по бару:
    if(!current_user_can('publish_posts')){//или current_user_can('administrator') или current_user_can('manage_options')
    add_filter('show_admin_bar','__return_false');
    }
    Ответ написан
    Комментировать
  • Как в Wordpress вывести посты определенной рубрики?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    Вот Вам пример вывода по слагу(ярлык):
    $slug='default';
    if($slug){
    	$arg=array('category_name'=>$slug,'posts_per_page'=>3,);
    
    $catquery = new WP_Query($arg); ?>
    <?php while($catquery->have_posts()) : $catquery->the_post(); ?>
    <h3><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h3>
    <div><?php the_excerpt(); ?></div>
    
    <?php endwhile;wp_reset_postdata();
    	}

    если что-то не ясно можете глянуть сюда:
    spoiler

    Видео на ютуб вывода с управлением через кастомайзер. исходники под видео
    об id то же сказано...
    Ответ написан
    24 комментария
  • Как отобразить месяца wordpress русскими словами?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    function dateToRussian($date){
    	$month=array(
    		"january"=>__("января",'VAB'),
    		"february"=>__("февраля",'VAB'),
    		"march"=>__("марта",'VAB'),
    		"april"=>__("апреля",'VAB'),
    		"may"=>__("мая",'VAB'),
    		"june"=>__("июня",'VAB'),
    		"july"=>__("июля",'VAB'),
    		"august"=>__("августа",'VAB'),
    		"september"=>__("сентября",'VAB'),
    		"october"=>__("октября",'VAB'),
    		"november"=>__("ноября",'VAB'),
    		"december"=>__("декабря",'VAB'));
    	$days=array(
    		"monday"=>__("Понедельник",'VAB'),
    		"tuesday"=>__("Вторник",'VAB'),
    		"wednesday"=>__("Среда",'VAB'),
    		"thursday"=>__("Четверг",'VAB'),
    		"friday"=>__("Пятница",'VAB'),
    		"saturday"=>__("Суббота",'VAB'),
    		"sunday"=>__("Воскресенье",'VAB'));
    	return str_replace(array_merge(array_keys($month),array_keys($days)),array_merge($month,$days),strtolower($date));}
    
    
    //вывод
    echo __('Сегодня','VAB').dateToRussian(date(' l, j F Y ')).__('года','VAB');
    Ответ написан
  • Как проверить страницу произвольного типа записей?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    if(is_singular('video')){ //Проверяет просматривается ли страница записи (поста, страницы, вложения, произвольный тип записи)

    Я пытался использовать get_post_type, но там просят id типа записей. А где его взять?

    global $post; //$post->ID
    $post_type = get_post_type( $post->ID );
    Ответ написан
    Комментировать
  • Записи Custom Post Type не видно в админке?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    .......
               'publicly_queryable'    => true,
                // 'query_var'             => 'post_type',
                'rewrite'               => $rewrite,
                'capability_type'       => 'post', 
            );

    вот так вижу

    вот так тоже вижу:
    ...
    'query_var'             => 'sso_dictors_lib',
    
    ....

    не слаг ли там должен быть?
    Ответ написан
    1 комментарий
  • Call to undefined function add_meta_box(). Как?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    Пример(перепишите под свой тип постов и разметку):
    add_action('add_meta_boxes','VAB_short_for_posts_meta_box');
    if(!function_exists('VAB_short_for_posts_meta_box')){
    	function VAB_short_for_posts_meta_box(){
    		$screens=array('post');
    		add_meta_box('post_meta',__('Шорткод Поста','VAB'),'post_meta_box_callback',$screens,'side','high');
    		}
    	}
    	if(!function_exists('post_meta_box_callback')){
    		function post_meta_box_callback($post,$meta){
    			$screens=$meta['args'];
    			echo __('Скопируйте Шорткод ниже для размещения этого поста в виджетах, постах и страницах:','VAB'),'<div class="VAB_ShortCode" style="background:#FF0000;color:#FFF;padding:4px;border-radius:4px;">[VAB_post_show id="'.$post->ID.'"]</div>',__('Для вывода миниатюр используйте шорткод ниже:','VAB'),'<div class="VAB_ShortCode" style="background:#FF0000;color:#FFF;padding:4px;border-radius:4px;">[VAB_min_post_show id="'.$post->ID.'"]</div>';
    		}
    	}


    Ваш вариант в спойлере
    spoiler

    function sso_dictors_lib_post_type() {
    
            $dictors_labels = array(
                'name'                  => _x( 'База Дикторов', 'sso_dictors_lib' ),
                'singular_name'         => _x( 'База Дикторов', 'sso_dictors_lib' ),
                'menu_name'             => __( 'База Дикторов', 'sso_dictors_lib' ),
                'name_admin_bar'        => __( 'Диктора', 'sso_dictors_lib' ),
                'attributes'            => __( 'Аттрибуты диктора', 'sso_dictors_lib' ),
                'all_items'             => __( 'Все Дикторы', 'sso_dictors_lib' ),
                'add_new_item'          => __( 'Добавить Нового Диктора', 'sso_dictors_lib' ),
                'add_new'               => __( 'Добавить Диктора', 'sso_dictors_lib' ),
                'new_item'              => __( 'Новый Диктор', 'sso_dictors_lib' ),
                'edit_item'             => __( 'Редактировать Диктора', 'sso_dictors_lib' ),
                'update_item'           => __( 'Обновиить Диктора', 'sso_dictors_lib' ),
                'view_item'             => __( 'Просмотеть Диктора', 'sso_dictors_lib' ),
                'view_items'            => __( 'Просмотреть Диктора', 'sso_dictors_lib' ),
                'search_items'          => __( 'Найти Диктора', 'sso_dictors_lib' ),
                'not_found'             => __( 'Дикторов не найдено', 'sso_dictors_lib' ),
                'not_found_in_trash'    => __( 'Здесь Дикторов нет', 'sso_dictors_lib' ),
                'featured_image'        => __( 'Фотография Диктора', 'sso_dictors_lib' ),
                'set_featured_image'    => __( 'Установить фотографию Диктора', 'sso_dictors_lib' ),
                'remove_featured_image' => __( 'Удалить фотографию Диктора', 'sso_dictors_lib' ),
                'use_featured_image'    => __( 'Все фотографии Диктора', 'sso_dictors_lib' ),
                'insert_into_item'      => __( 'Добавить в анкету', 'sso_dictors_lib' ),
                'uploaded_to_this_item' => __( 'Прикрепить к этой анкете', 'sso_dictors_lib' ),
                'items_list'            => __( 'Список Дикторов', 'sso_dictors_lib' ),
                'items_list_navigation' => __( 'Список Дикторов', 'sso_dictors_lib' ),
                'filter_items_list'     => __( 'Фильтр Дикторов', 'sso_dictors_lib' ),
            );
    
            $rewrite = array(
            'slug'                  => 'sso_dictors_lib',
            'with_front'            => true,
            'pages'                 => true,
            'feeds'                 => true,
            );
            $dictors_args = array(
                'label'                 => __( 'База Дикторов', 'sso_dictors_lib' ),
                'description'           => __( 'База Дикторов и Актеров озвучки.', 'sso_dictors_lib' ),
                'labels'                => $dictors_labels,
                'supports'              => array('revisions', 'thumbnail' ),
                'taxonomies'            => array( 'sso_dictor_type'),
                'hierarchical'          => false,
                'public'                => true,
                'show_ui'               => true,
                'show_in_menu'          => true,
                'menu_position'         => 5,
                'menu_icon'             => 'dashicons-admin-users',
                'show_in_admin_bar'     => true,
                'show_in_nav_menus'     => true,
                'can_export'            => true,
                'has_archive'           => true,
                'exclude_from_search'   => true,
                'publicly_queryable'    => true,
                'query_var'             => 'post_type',
                'rewrite'               => $rewrite,
                'capability_type'       => 'post', 
            );
            register_post_type( 'sso_dictors_lib', $dictors_args );
    
        }
        add_action( 'init', 'sso_dictors_lib_post_type', 0 );
    
    
    
    
    function add_dictor_data(){ ?>
        <div class="form-row">   
         <div class="form-group row" id="new_proprietor_data">        
             <div class="form-group col-3">
              <label for="dictor__surname">Фамилия:</label>
              <input type="text" needed="true" class="form-control" id="dictor__surname" value="" >
             </div>
    
             <div class="form-group col-3">
              <label for="dictor__name">Имя:</label>
              <input type="text" needed="true" class="form-control" id="dictor__name" value="" >
             </div>
    
             <div class="form-group col">
              <label for="dictor_phone">Телефон:</label>
              <input type="text" class="form-control" needed="true" id="dictor_phone" value="" > 
             </div>        
    
             <div class="form-group col">
              <label for="dictor_mail">E-Mail:</label>
              <input type="text" class="form-control" needed="true" id="dictor_mail" value="" >
             </div>
         </div>
        </div>
    
    <?php 
    }
    add_action('add_meta_boxes','VAB_short_for_posts_meta_box');
    if(!function_exists('VAB_short_for_posts_meta_box')){
      function VAB_short_for_posts_meta_box(){
        $screens=array('sso_dictors_lib');
    		add_meta_box('dictordatas', 'Личные Данные Диктора', 'add_dictor_data', $screens, 'normal', 'high');
        }
      }

    Ответ написан
    3 комментария
  • Есть ли аналог php функции is_admin_bar_showing() для проверки в js?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    Вы можете передать функцию в js с помощью wp_localize_script.
    Пример:
    код в function.php
    add_action('wp_enqueue_scripts','load_styles_scripts');
    if(!function_exists('load_styles_scripts')):function load_styles_scripts(){
    		wp_enqueue_script('click',get_template_directory_uri().'/js/click.js',array('jquery'));//подключенный файл скрипта в котором Вы хотите использовать функцию is_admin_bar_showing
    
    		$IABS=array('IABS_Out'=>is_admin_bar_showing());
    		wp_localize_script('click','IABS_In',$IABS);//передаем в файл скрипта функцию
    
    }endif;

    далее необходимо получить данные в этом файле скрипта
    var IABS=IABS_In.IABS_Out;
    после делаем, что захотим
    if(IABS){alert('Админ бар отображается');}
    Ответ написан
    1 комментарий
  • Как создать на wp кастомную роль с просмотром post_type?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    интересный вопрос.....Спасибо!
    Пройдя по ссылке Анатолия и поковырявшись вот такой вариант у меня вышел)):
    создаем новую роль
    add_role('newvabuser',
    		__('Новый пользователь','VAB'),
    		array(
    		'read'=>true,
    		'edit_posts'=>false,
    		'delete_posts'=>false,
    		'publish_posts'=>false,
    		'upload_files'=>true,
    	 )
    	);

    насколько я понял данный код можно удалить после того как роль с массивом попадет в базу....
    если что не так, используйте
    remove_role('newvabuser');
    далее создаем новый пост тип
    add_action('init','create_custom_post_types');
    function create_custom_post_types(){
    	register_post_type('vabs',
    		array(
    			'labels'=>array(
    					'name'=>__('Новый тип записи','VAB'),
    					'singular_name'=>__('Новый тип записи','VAB'),
    					'menu_name'=>__('Новый тип записи','VAB'),
    					'add_new'=>__('Добавить новую','VAB'),
    					'add_new_item'=>__('Добавить новую','VAB'),
    					'edit_item'=>__('Редактировать','VAB'),
    					'new_item'=>__('Новая','VAB'),
    					'all_items'=>__('Все записи','VAB'),
    					'view_item'=>__('Просмотр','VAB'),
    					'search_items'=>__('Искать','VAB'),
    					'not_found'=>__('Записи не найдены','VAB'),
    					'not_found_in_trash'=>__('В корзине записи не найдены','VAB'),
    					'parent_item_colon'=>''
    			),
    			'public'=>true,
    			'has_archive'=>true,
    			'rewrite'=>array('slug'=>'vab'),
    			'capability_type'=>'vab',
    			'capabilities'=>array(
    				'publish_posts'=>'publish_vabs',
    				'edit_posts'=>'edit_vabs',
    				'edit_others_posts'=>'edit_others_vabs',
    				'delete_posts'=>'delete_vabs',
    				'delete_others_posts'=>'delete_others_vabs',
    				'read_private_posts'=>'read_private_vabs',
    				'edit_post'=>'edit_vabs',
    				'delete_post'=>'delete_vabs',
    				'read_post'=>'read_vabs',
    				'assign_terms' =>'edit_taxo',
    				'manage_terms'=>'manage_vab_terms',
    				'edit_terms'=>'manage_vab_terms',
    				'delete_terms'=>'delete_vab_terms',
    				'assign_terms'=>'edit_vab-type'
    			),
    			'supports'=>array('title','editor','thumbnail')
    		)
    	);
    }

    важно обратить внимание на массив с параметрами capabilities. его мы дальше передадим нашей роли:
    add_action('admin_init','add_vabs_caps');
    function add_vabs_caps(){
    	$admins=get_role('newvabuser');
    	$admins->add_cap('edit_vabs');
    	$admins->add_cap('publish_vabs');
    	$admins->add_cap('read_vabs');
    	$admins->add_cap('read_private_vabs');
    	$admins->add_cap('delete_vabs');
    	$admins->add_cap('edit_taxo');
    	$admins->remove_cap('edit_others_vabs');
    	$admins->remove_cap('delete_others_vabs');
    	$admins->add_cap('manage_vab_terms');
    	$admins->add_cap('delete_vab_terms');
    	$admins->add_cap('edit_vab-type');
    	$admins->add_cap('manage_categories');
    	$admins->add_cap('edit_categories');
    	$admins->add_cap('delete_categories');
    	$admins->add_cap('assign_categoriess');
    }

    В итогах данную запись смогут редактировать только админ и пользователь с данной ролью больше никто:
    5d5c421fb2511245944305.jpeg
    5d5c422ca4152143576315.jpeg
    Вам нужно все это только под себя переделать
    Ответ написан
    1 комментарий
  • Почему в рубрике не выводятся записи?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    add_action('init','faq_Posts');function faq_Posts(){
    register_post_type(
        'faq',
        array(
            'labels' => array(
                'name'               => 'Все FAQ',
                'singular_name'      => 'Вопрос-ответ',
                'add_new'            => 'Добавить FAQ',
                'add_new_item'       => 'Добавление FAQ',
                'edit_item'          => 'Редактирование FAQ',
                'new_item'           => 'Новый FAQ',
                'view_item'          => 'Смотреть FAQ',
                'search_items'       => 'Искать FAQ',
                'not_found'          => 'Не найдено',
                'not_found_in_trash' => 'Не найдено в корзине',
                'parent_item_colon'  => '',
                'menu_name'          => 'FAQ',
            ),
            'public' => true,
            'has_archive' => true,
            'menu_position' => 4,
            //'show_in_nav_menus' => false,
            'menu_icon' => 'dashicons-welcome-learn-more',
            'supports' => array(
                'title',
                'editor'
            ),
            'taxonomies' => array('category')
        )
    );
    }
    
    add_filter('pre_get_posts','add_New_Post_type_in_arhive');
    if(!function_exists('add_New_Post_type_in_arhive')){
    	function add_New_Post_type_in_arhive($query){
    		if(!is_admin()){
    			if(is_author()&&$query->is_main_query()||is_category()&&$query->is_main_query()||is_year()&&$query->is_main_query()||is_month()&&$query->is_main_query()||is_day()&&$query->is_main_query()||is_tag()&&$query->is_main_query()){
    				$query->set('post_type',array('post','faq'));
    			}return $query;}}}
    Ответ написан
    Комментировать
  • Как скрыть контент и показывать только после ввода кода?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    Зачем же сразу плагины? Можно, например, использовать сессию. Не забываем, что сессию и куки объявляем до вывода любой информации:
    <?php session_start();#Template Name: Загрузка файлов из списка на сервер с новым именем
    get_header();
    	if(have_posts()):
    		while(have_posts()):the_post();
    			get_template_part('VAB_template_parts/forms/VAB','FilesLoadServer');
    		endwhile;
    	endif;
    get_sidebar();get_footer();

    Ну и сам собственно код куда-нибудь:
    if(!function_exists('VAB_Authentication()')){function VAB_Authentication(){
    $pass='session_password';//это пароль
    $errorSession='';
    	if(isset($_POST['pass_value'],$_POST['pass_btn'])){
    		if($pass==$_POST['pass_value']){$_SESSION['unique_ProtecT']=true;
    		}else{$_SESSION['ProtecT']=false;$errorSession='<div title="'.__('Неверный пароль!','VAB').'">'.__('Неверный пароль!','VAB').'</div>';}}
    	if(empty($_SESSION['unique_ProtecT'])){?>
    		<div class="contact_message">
    			<div class="ProtecT">
    				<center>
    					<h4><?php echo $errorSession;printf(__('Страница для Администрации','VAB'));?></h4>
    					<form method="POST">
    						<div><?php printf(__('Введите пароль','VAB'));?>:&nbsp;&nbsp;&nbsp;<input type="text" name="pass_value" size="30" />&nbsp;&nbsp;&nbsp;<input type="submit" value="<?php printf(__('Ввод','VAB'));?>" name="pass_btn" />
    						</div>
    					</form>
    					<br><a href="<?php bloginfo('url');?>"><?php printf(__('Отмена','VAB'));?></a>
    				</center>
    			</div>
    		</div>
    <?php }}}
    if(function_exists('VAB_Authentication')):VAB_Authentication();endif;

    Вариант, где пароль устанавливается через кастомайзер или какой-либо раздел по управлению темой. В данном случае через мой раздел по управлению темой...:
    if(VABMoD('VAB_pass_session'))://если в опции есть какое-либо значение, то пароль есть значение опции
         $pass=VABMoD('VAB_pass_session');
    else://иначе пароль по умолчанию
        $pass='session_password';
    endif;

    Мы можем используя данную функцию просто затемнить экран(но вся разметка будет доступна в инженерной панели):
    5d4061ac7d5e0375154361.jpeg
    либо после вызова функции остановить все скрипты:
    if(function_exists('VAB_Authentication')):VAB_Authentication();endif;
    exit();//завершает все скрипты после... в том числе и сайдбары и футер и т.д.

    5d4061e606bfc663618253.jpeg
    или комбинируем оба варианта(оформляем, наводим красоту... баннеры на бакграунд и прочую чех**ню)
    Помимо можно просто обернуть блок, который необходимо скрыть в проверку:
    if(isset($_SESSION['unique_ProtecT'])&&$_SESSION['unique_ProtecT']==true){
    //скрытый контент(включая инженерную панель разумеется)
    }
    Ответ написан
    Комментировать
  • Как подключить функционал при определённом шаблоне записи WP?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    Сначало регистрируете новый тип Например (vabcarousel):
    5d381e618210e496141079.jpeg
    Далее в Вашем шаблоне добавте строку (#Template post type: тут Ваш зарегистрированный тип) Например (vabcarousel):
    5d381ec4abca9855320000.jpeg
    Далее заходим в админку и в ней создаем запись:
    5d381f06a209e933521874.jpeg
    Указываем наш шаблон для записи:
    5d381f1c965f9791674672.jpeg

    далее к нашему шаблону добавляем поля Например:
    add_action('comment_form_logged_in_after','add_custom_fields');
    add_action('comment_form_after_fields','add_custom_fields');
    function add_custom_fields(){
    if(!is_page_template('school_template.php')){return;}
    if(is_page_template('school_template.php')){

    и в проверке указываете Ваш тип постов в моем случае на скрине vabcarousel
    add_filter( 'preprocess_comment', 'comm_rating_require_rating' );
    function comm_rating_require_rating( $commentdata ) {
      $post = get_post( $commentdata['comment_post_ID'] );
    
      if( $post->post_type == 'vabcarousel' ){
    Ответ написан
    Комментировать
  • Как получить главную страницу сайта (что именно имею ввиду напишу в описании)?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    у меня стоит проверка is_home для страницы постов и она наверно перебивает is_front_page
    да только с is_home надо конкретизировать для случаев со страницей... Давайте разберемся с настройкой...
    5d34ca8acafe3282871089.jpeg
    Открываем инженерную панель и смотрим атрибут name у наших радио кнопок. Он будет одинаковым для обоих. Это опция в базе данных show_on_front. По умолчанию, если настройки не указаны, либо, если Мы их сами выставляем на записи, то в опцию ложится значение value данной радио кнопки - posts. Если выбрать страницу значение будет page (см. value). Пример:
    $opt=get_option('show_on_front');
    if($opt=='page'){echo 'page';}else if($opt=='posts'){echo 'posts';}

    Мы можем, чтобы не ломать голову, прям в шаблоне, который отвечает за вывод главной страницы сделать эту проверку. И в зависимости от условий выводить дополнительные данные, либо подключить отдельный файл с особой разметкой... Ну смотря, что Вам нужно...
    Так же Вы можете добавить условия внутри Ваших условий, заменив is_home на is_front_page. Т.к. is_home проверяет показывается ли страница с последними постами, обычно это главная страница сайта. Т.е. is_home не для случая, когда в настройках будет выбрана страница
    Типо:
    if(is_front_page()){
    	$opt=get_option('show_on_front');
    	if($opt=='page'){//если в настройках выбрана страница
    		echo 'page';
    	}else if($opt=='posts'){//если в настройках выбраны записи
    		echo 'posts';
    	}}

    аналог:
    if(is_home()){echo 'записи';}else if(!is_home()&&is_front_page()){echo 'страница';}

    т.е is_home() это, примерно, то же самое, что и:
    if(is_front_page()){
    	$opt=get_option('show_on_front');
    	if($opt=='posts'){//если в настройках выбраны записи
    			echo 'posts';
    		}}

    но без учета страницы:
    if($opt=='page'){//если в настройках выбрана страница
    		echo 'page';
    	}

    Иными словами - мы спрашиваем является ли страница главной через is_home(). Нам придет ответ да только, если выбраны записи... is_front_page() говорит да в любом случае, если мы на главной....
    Выбирайте вариант по вкусу...
    Ответ написан
    Комментировать
  • Как исправить notice trying to get property of non-object in header.php on line 299?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    $vab_user_id=get_current_user_id();
    if($vab_user_id==1){echo "administrator";}
    else if($vab_user_id==2){echo 'editor';}
    else if($vab_user_id==3){echo 'avtor';}
    else if($vab_user_id==4){echo 'Participant';}
    else{ echo 'Alien';}//не авторизован

    у не авторизованного пользователя нет роли. Если Вы все же желаете свой вариант, то весь код возмите, как вариант, в условие авторизации:
    if(is_user_logged_in()){
    $current_user=wp_get_current_user();
    $tmp_uid=$current_user->ID;
    $user_meta=get_userdata($tmp_uid);
    $user_roles=$user_meta->roles;
    error_reporting(0);
    if(in_array('administrator',$user_roles,true)){
    echo "administrator";
    echo ''; }}

    либо перед тем как получаете роль:
    $current_user=wp_get_current_user();
    $tmp_uid=$current_user->ID;
    $user_meta=get_userdata($tmp_uid);
    if(is_user_logged_in()){
    $user_roles=$user_meta->roles;
    error_reporting(0);
    if(in_array('administrator',$user_roles,true)){
    echo "administrator";
    echo ''; }}
    Ответ написан