Увлекаюсь веб разработками (самообучение).
Контакты

Достижения

Все достижения (2)

Наибольший вклад в теги

Все теги (15)

Лучшие ответы пользователя

Все ответы (41)
  • Как проверить страницу произвольного типа записей?

    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 );
    Ответ написан
  • Как скрыть контент и показывать только после ввода кода?

    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){
    //скрытый контент(включая инженерную панель разумеется)
    }
    Ответ написан
  • Есть ли аналог 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('Админ бар отображается');}
    Ответ написан
  • Как запретить вход в аккаунт по роли?

    V_A_B
    @V_A_B
    Если мой ответ Вам помог, отметье его как решение
    add_filter('authenticate','filter_function_name_4601');
    function filter_function_name_4601($user){
    	if(isset($_POST['log'])){
    	$username=$_POST['log'];
    	if(isset($username)){$user=get_user_by('login',$username);$user_data=get_object_vars($user);}	
    	if(isset($user_data)){$userId=$user_data["ID"];$u_meta=get_userdata($userId);$u_roles=$u_meta->roles;}
    	}	
    	if(!empty($u_roles)&&(in_array('administrator',$u_roles,true)||in_array('editor',$u_roles,true))){//перебираем роли. которые хотим запретить
    	$Who=in_array('administrator',$u_roles,true)?__('Администраторам','VAB'):__('Редакторам','VAB');
    	wp_die($Who.' '.__('авторизация запрещена','VAB'));//пишем месседж для них
    	}else{
    	return $user;
    	}
    }

    Результат, смотря кто ломится
    5e9849612ddb8834465415.jpeg
    5e9849ed43f95972809011.jpeg

    через username
    add_filter('authenticate','filter_function_name_4601',10,3);
    function filter_function_name_4601($user,$username,$password){
    	if($username){
    	if(isset($username)){$user=get_user_by('login',$username);$user_data=get_object_vars($user);}	
    	if(isset($user_data)){$userId=$user_data["ID"];$u_meta=get_userdata($userId);$u_roles=$u_meta->roles;}
    	}	
    	if(!empty($u_roles)&&(in_array('administrator',$u_roles,true)||in_array('editor',$u_roles,true))){//перебираем роли. которые хотим запретить
    	$Who=in_array('administrator',$u_roles,true)?__('Администраторам','VAB'):__('Редакторам','VAB');
    	wp_die($Who.' '.__('авторизация запрещена','VAB'));//пишем месседж для них
    	}else{
    	return $user;
    	}
    }

    это, если разрабы завтра log поменяют на что-то другое...
    Ответ написан
  • Как добавить постраничную навигацию?

    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);
    Ответ написан