• Где почитать как происходит работа хуков?

    не читать надо, а разбираться. такое вы не прочитаете...

    на codex wordpress или сайте wp-kama, который оставил Антон в комментарии выше, когда читаете информацию по хуку сама функция в конце статьи, как правило, описана... смотрите в нее вот и все. если, что-то не понятно, гуглите то, что не понятно. и дойдете до финала, там же увидите расположение кода в движке.

    например: wp head
    //wp-includes/general-template.php
    
    function wp_head() {
    	/**
    	 * Prints scripts or data in the head tag on the front end.
    	 *
    	 * @since 1.5.0
    	 */
    	do_action( 'wp_head' );
    }


    отправит вас в сторону do action

    //wp-includes/plugin.php
    
    function do_action( $hook_name, ...$arg ) {
    	global $wp_filter, $wp_actions, $wp_current_filter;
    
    	if ( ! isset( $wp_actions[ $hook_name ] ) ) {
    		$wp_actions[ $hook_name ] = 1;
    	} else {
    		++$wp_actions[ $hook_name ];
    	}
    
    	// Do 'all' actions first.
    	if ( isset( $wp_filter['all'] ) ) {
    		$wp_current_filter[] = $hook_name;
    		$all_args            = func_get_args(); // phpcs:ignore PHPCompatibility.FunctionUse.ArgumentFunctionsReportCurrentValue.NeedsInspection
    		_wp_call_all_hook( $all_args );
    	}
    
    	if ( ! isset( $wp_filter[ $hook_name ] ) ) {
    		if ( isset( $wp_filter['all'] ) ) {
    			array_pop( $wp_current_filter );
    		}
    
    		return;
    	}
    
    	if ( ! isset( $wp_filter['all'] ) ) {
    		$wp_current_filter[] = $hook_name;
    	}
    
    	if ( empty( $arg ) ) {
    		$arg[] = '';
    	} elseif ( is_array( $arg[0] ) && 1 === count( $arg[0] ) && isset( $arg[0][0] ) && is_object( $arg[0][0] ) ) {
    		// Backward compatibility for PHP4-style passing of `array( &$this )` as action `$arg`.
    		$arg[0] = $arg[0][0];
    	}
    
    	$wp_filter[ $hook_name ]->do_action( $arg );
    
    	array_pop( $wp_current_filter );
    }


    и так далее
  • Как вывести общее количество товаров магазина Woocommerce в записи/на странице с помощью шорткода?

    nulledbox, я вам дал четкое направление и намек на то, что ответ на этот впрос - код в три строчки. В интернете масса данных по этим трем функциям.

    это не ответ !


    Верно! Это комментарий.

    В теме вопроса четко указано КАК ВЫВЕСТИ С ПОМОЩЬЮ ШОРТКОДА


    Вы задание даете?... Это строго запрещено... Читайте правила...
  • Как на WP дать доступ к странице и скачиванию после идентификации?

    andreygoncherov,

    Лучше в код бы не лезть


    а откуда берутся так называемые модули?

    в таком случае перебирать плагины, которые максимально удовлетворят потребности. но это как правило куча попутного мусора (Вам там уже Elementor предложили) ...
  • Как на WP дать доступ к странице и скачиванию после идентификации?

    Нужно сделать подсайт для клиентов


    Это уже лишнее...

    можно создать для каждой категории роль пользователя и от того, с какой ролью человек залогинен отдавайте нужный контент. По вопросу ссылок надо понимать, как у Вас выдается доступ. к примеру добавить юзеру мета поле с определенным значением и, если значение верно, давать возможность для скачивания. скачивание оформить через заголовки, а не по прямой ссылке, чтобы местоположение не было известно.
    что-то похожее на

    if(!function_exists('file_force_download')){
    	function file_force_download($file){
    		if(file_exists($file)){
    			if(ob_get_level()){
    				ob_end_clean();}
    			header('Content-Description:File Transfer');
    			header('Content-Type:application/octet-stream');
    			header('Content-Disposition:attachment;filename='.basename($file));
    			header('Content-Transfer-Encoding:binary');
    			header('Expires:0');
    			header('Cache-Control:must-revalidate');
    			header('Pragma:public');
    			header('Content-Length:'.filesize($file));
    			if($fd=fopen($file,'rb')){
    				while(!feof($fd)){
    					print fread($fd,1024);}
    				fclose($fd);}
    				exit;}}}

  • Как подключить SSL?

    И при чем тут вордпресс?! Начинать надо с описания того, где(у кого) вы его приобрели и что на нем вообще стоит. о каких сертификатах вы говорите?...
    Полтора года все получалось нормально.

    если речь о letsencrypt, то там вообще автоматически все продлевается.

    У Вас сертификаты стоят просроченые, поэтому и не открывается ничего по умолчанию.... а то, что кроме главной все ложиться, то это уже совсем другая проблема -
    ...к хостеру вопрос


    Полтора года все получалось нормально.


    Думаю после первых трех месяцев уже было ясно одно - менять надо хостинг провайдера...
  • Как сделать custom post type главной страницей?

    ммм, а если в хлебных крошках на главную перейти, открывает главную с нужной страницей без структуры url (вопрос риторический)???

    поидеи делают это либо через update_option('page_on_front', 9259);

    либо через filter

    add_filter( 'get_pages', 'add_my_salesletters' );
    if ( !function_exists( 'add_my_salesletters' ) ) {
    	function add_my_salesletters( $pages ) {
    		$my_salesletters_pages = new WP_Query( array( 'post_type' => 'qanda' ) );
    		if ( $my_salesletters_pages->post_count > 0 ){
    			$pages = array_merge( $pages, $my_salesletters_pages->posts );
    		}
    		return $pages;
    	}
    }


    но результат будет аналогичным.

    Думаю, проще написать шорткод, передавать в него нужный id и выводить на главной... ¯\_(ツ)_/¯
    чем лезть в запросы движка, ломать urlы и прочие махинации с движком мутить...
  • Как сделать custom post type главной страницей?

    8) Забыть об использовании плагинов, разобратся что такое ACF и понять что он очень важен.


    а ACF это не плагин?)))
  • Как исправить циклическое перенаправление WordPress?

    Natasha000,
    я написал пример проверки через post_title.
    Не забывайте, что Вы можете проверить через идентификатор, либо ещё через что-то... смотрите, что возвращает функция get_post() и выбирайте, что Вам по душе...
  • Как исправить циклическое перенаправление WordPress?

    VasyaID, типичный представитель молодого поколения, который думает, что все ему должны. только бы с копипастить, не думая, не напрягая мозги... не знающий того, что при наборе текста, либо написании информация воспринимается и запоминается лучше. А лишние телодвижения могут иметь самый что ни на есть смысл, но как Вы заметили .... Вам этого не понять.

    З.ы. А кто Вы делать мне замечания!? (вопрос риторический. я знаю на него ответ)
  • Как исправить циклическое перенаправление WordPress?

    Natasha000,
    возможно проблема в хуке

    проблема не в акшине(событии), а в том, что Вы не проверяете текущую страницу. У Вас в проверке только проверяется авторизован пользователь или нет. Кроме проверки авторизации необходимо исключить саму страницу авторизации из редиректа.

    Просто мне нужно направить пользователя на страницу мой акккаунт (она на сайте)


    Вот с таких деталей и надо начинать вопрос.

    Пример

    add_action( 'template_redirect', 'my_super_redirect' );
    if ( ! function_exists( 'my_super_redirect' ) ) {
    	function my_super_redirect() {
    		$page =get_post();
    		if ( empty($page) || ( 'Карта сайта' != $page->post_title && !is_user_logged_in() ) ){
    			// wp_redirect( esc_url(wp_login_url()) );
    			wp_redirect( 'https://www.exampl.com/карта-сайта' );
    			exit();
    		}
    }}


    можно так (тогда, например, 404 страница будет видна):

    if ( ! empty($page) ){
    			$title	= $page->post_title;
    			if ( $title !='Карта сайта' && !is_user_logged_in()) {
    				// wp_redirect( esc_url(wp_login_url()) );
    				wp_redirect( 'https://www.exampl.com/карта-сайта' );
    				exit();
    			}
    		}

  • Как исправить циклическое перенаправление WordPress?

    VasyaID,
    Идиотизм и не уважение, когда вопрос задают и код выкладывают скриншотом. Тут я бы согласился. В данном случае Ваш комментарий как затычка ненужная. Тем более кода не простыня, а менее строчки. Ибо у автора вопроса в блокноте уже есть условие. Правда условие зачем-то в дополнительных скобках. От части именно поэтому и скриншот. Чтобы автор, возможно, заметил разницу между записаным на скриншоте и у него, перепечатывая. Не думаю, что напечатать функцию header и подставить туда свою ссылку будет проблемой для кого-то...

    З.ы. спасибо за коммент, рассмешили.
  • Как добавить мета теги под фильтры для Wordpressa?

    Добрый день!


    Добрый.

    Довольно противоречивый вопрос получается, на мой взгляд.

    Как добавить мета теги под фильтры для Wordpressa?


    А тут все зависит от того, как Вы вообще создаете сайты на WP. В Вашем вопросе для того, чтобы дать ответ, абсолютно нуль инфы (в том числе и о том, как реализованы Ваши фильтры, разметка, бла бла бла)...

    коротко грубый пример

    допустим у Вас есть в записях произвольные поля, через которые заполняются будущие метаданные:
    1. title
    2. description
    3. keywords
    4. robots


    тогда инфу по этим данным Мы можем вывести через любой функциональный файл аля:

    //......
    global $post;
    //получаем, проверяем, фильтруем нужные данные формируем нижние переменные через различного рода проверки бла бла бла
    //аля  $SEO_title= ... :(is_404()?'404 - '.esc_html__('страница не существует','VAB'):(is_search()?esc_html__('Результаты поиска','VAB').': '.get_search_query():(is_archive()?(is_day()?esc_html__('Архив по дням','VAB').': '.get_the_date():(is_month()?esc_html__('Архив по месяцам','VAB').': '.get_the_date('F Y'):(is_year()?esc_html__('Архив по годам','VAB').': '.get_the_date('Y'):(is_category()?esc_html__('Категория архива','VAB').': '.single_cat_title('',false):(is_tag()?esc_html__('Архив по меткам','VAB').': '.single_tag_title('',false):(has_post_format()?esc_html__('Архив по формату','VAB').': '.single_tag_title('',false).'/'.get_post_format():(is_author()?esc_html__('Архив Автора','VAB').': '.get_the_author_meta('display_name',get_user_by('id',get_query_var('author'))->ID):esc_html__('Архив блога','VAB')))))))): ... 
    //......
    
    $SEO_index=isset($SEOA['SEO_index'])?$SEOA['SEO_index']:'all';?>
    <title><?php echo $SEO_title;?></title>
    <meta name="description" content="<?php echo $SEO_description;?>"/>
    <meta name="keywords" content="<?php echo $SEO_keywords;?>"/>
    <meta name="robots" content="<?php echo $SEO_index;?>"/><?php
    }}add_action('wp_head','show_SEO_meta',0);


    разумеется сами по себе эти метаданные в разметке не выводятся в данном случае... они выводятся только через событие wp_head...

    что-то подобное можно реализовать и для H1 (написать функцию, которая будет после проверки перебирать все варианты и ретюрнить нужное, а уже в заметке выводить эту функцию в нужных Вам шаблонах)


    ... может быть есть гайд ?


    не думаю...
  • Как вывести миниатюру рубрики Wordpress?

    плохо искали. там полно этой инфы...

    как и сказал Антон это кастом

    Вот Вам пример событий из коробки под кастом:

    /**
     * Add extra fields to custom taxonomy edit and add form callback functions
     */
    // Edit taxonomy page
    if(!function_exists('extra_edit_tax_fields')){
    function extra_edit_tax_fields($tag){
       //...
    	 }}
    add_action('category_edit_form_fields','extra_edit_tax_fields',10,2);
    add_action('taxqanda_edit_form_fields','extra_edit_tax_fields',10,2);
    // Add taxonomy page
    if(!function_exists('extra_add_tax_fields')){
    function extra_add_tax_fields($tag){
       //...
    	 }}}}
    add_action('category_add_form_fields','extra_add_tax_fields',10,2);
    add_action('taxqanda_add_form_fields','extra_add_tax_fields',10,2);
    // Save extra taxonomy fields callback function.
    if(!function_exists('save_extra_taxonomy_fields')){
    function save_extra_taxonomy_fields($term_id){
       //...
    	 }}
    add_action('create_category','save_extra_taxonomy_fields',10,2);
    add_action('edited_category','save_extra_taxonomy_fields',10,2);
    add_action('create_taxqanda','save_extra_taxonomy_fields',10,2);
    add_action('edited_taxqanda','save_extra_taxonomy_fields',10,2);


    где:
    category_edit_form_fields, например, это стандартные категории.
    а вот taxqanda_edit_form_fields это пост тип произвольный qanda и ее таксономия taxqanda

    можно через простое поле, а можно и как положенно медиабаттоном оформить...

    633c62cb4968c074645176.jpeg
  • WordPress При выбор одного из элементов tab блока, страница поднимается к header. Как исправить?

    Антон Литвиненко, ваще никакие не кидают. проверял на нескольких браузерах. у него на скрине они ваще сверху... реклама походу
  • Как создать нестандартный цикл вывода постов WordPress?

    выводите Ваши посты циклом как обычно, но основную разметку выносите за цикл + 2 переменные пустые. в цикле при этом ведите счет увеличивая одну пустую переменную на единицу за итерацию и вторую наполняйте массивом с id постов, которые выводятся. после цикла смотрите, если не хватает записей, дополняйте новой выборкой с нужным количеством исключая выведенные идентификаторы.

    ...закрываем основную разметку...
  • Как сделать разные 404?

    Zmeevik-sib,
    Есть сайт на WP с перечнем стран.


    вопрос в том, как это реализовано.!

    Если это через полноценный MULTI WP, то у вас по умолчанию будет url согласно странам, например, sitename.ru/italia/404. остается только проверять блог через path и отдавать соответствующий tamplate в самом файле 404.php
  • Перенаправление на страницу входа на основной сайт в мультисайте?

    Вы можете использовать фильтр login_header или login_headerurl
    в прикрепленной к фильтру функции получайте id блога через функцию get_current_blog_id
    далее юзаете global $wpdb и делаете выборку по полученному id из базы.
    далее из полученного объекта смотрите $blog[0]->path и делаете сравнение по типу:
    if(!empty($blog[0]->path)&&$blog[0]->path!=="/"){
    //фомируете ссылку с помощью is_ssl() и $_SERVER['HTTP_HOST']
    //отдаете wp_redirect( $url );
    //exit();
    }

    все
  • Возможно ли подключить работающую пагинацию на странице с выводом постов кастомного типа?

    Андрей, дело в том, что если создать файл согласно иерархии и кастом тип пост, то вордпресс сам его подхватит и прекрасно будет его обрабатывать с любой добавленной пагинацией

    archive-{post-type}.php
    The archive post type template is used when visitors request a custom post type archive. For example, archive-acme_product.php would be used for displaying an archive of posts from the custom post type named acme_product. The archive.php template file is used if the archive-{post-type}.php is not present.


    и не придется велосипедить с new WP_Query
    запросы через new WP_Query или подобные предназначен не для создания страниц с пагинацией, а для получения записей/страниц для дальнейшей обработки и вывода, например, в каруселях, шорткодах и там ещё чего-то...

    а, если вам надо вмешаться в запрос и вывести, например, иное количество постов на данной странице, то использовать для этого нужно, созданное для этого, событие pre_get_posts