WordPress как на ладони

Как выводить записи по ID указанному в URL?

Делаю впервые тему, есть страница с шаблоном

<?php/* Template Name: product */?>

И есть кастомные посты при помощи плагина Pods

    $posts = get_posts( array(
		'numberposts' => -1,
		'category'    => 0,
		'orderby'     => 'date',
		'order'       => 'ASC',
		'include'     => array(),
		'exclude'     => array(),
		'meta_key'    => '',
		'meta_value'  =>'',
		'post_type'   => 'wall-deflector',
		'suppress_filters' => true, // подавление работы фильтров изменения SQL запроса
	) );

Как можно сделать чтобы при переходе на site/product/1

Выводился пост с ID 1? $posts[1];

0
rudnk
3 года назад
  • 0
    kolshix779 paxtoy.com

    1 из вариантов
    $current_url = home_url($_SERVER['REQUEST_URI']);
    2 потом через replace php получить ID из URL
    3 сделать проверки, чтоб именно id был а не другой текст ( is_numeric )
    4 поместить id в get_posts или get_post

    Комментировать
  • 1

    Вариант 2, такой же сбубнотанцевальный, как и первый - добавить правило рерайта постоянных ссылок

    Комментировать
  • 1
    Kama9619

    Тебе нужно отключить дефолтное формирования ЧПУ для этого кастомного типа записи. Для этого установить rewrite = false. И вручную создать правила ЧПУ с помощью add_rewrite_rule() примерно так:

    add_action( 'init', 'rewrite_rule_my' );
    
    function rewrite_rule_my(){
    
    	add_rewrite_rule( '^product/([0-9]+)/?', 'index.php?product=$matches[1]', 'top' );
    }

    Затем на хуке request поймать и подправить текущий запрос на нужный. Там нужно получить слаг поста по ID и подсунуть его в параметры запроса.

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация