WP перезаписывает мою setup_postdata ()

Я пытаюсь отобразить на (очень) пользовательский URL-адрес сообщение в шаблоне по своему выбору. Идентификатор моего сообщения в этом примере – 1008, а мое имя шаблона – /singles/lecture.php.

Im будущее проверит URL-адрес и добавит условие, когда нужно выполнить действие – теперь для тестов условие выполняется только в том if (1) – что для тестов работает для всех URL-адресов.

Когда я ввожу свой собственный URL-адрес, шаблон извлекается и отображается без каких-либо проблем, но есть проблема с данными.

В функции, когда я проверяю переменную $ post, есть назначенный по умолчанию объект $post – позволяет сказать его ID == 488, поэтому я пытаюсь заставить WordPress использовать сообщение, которое мне нужно, поэтому я делаю get_post() и setup_postdata() способ, которым codex говорит, что он должен работать, но это не так.

Данные $ post, доступные в моем /singles/lecture.php , возвращают данные начального сообщения по умолчанию (т.е. 488).

 add_filter('template_include', 'my_custom_urls'); function my_custom_urls($original_template) { global $post; if (1) { // second correct but not working alternative // $post = get_post(1008); // setup_postdata($post); $post_object = get_post(1008); setup_postdata($GLOBALS['post'] =& $post_object); return get_template_directory() . '/singles/lecture.php'; } else { return $original_template; } } 

Что я делаю не так? Как установить переменную $ post таким образом, чтобы она была доступна для моего шаблона.

Solutions Collecting From Web of "WP перезаписывает мою setup_postdata ()"

Должны ли все записи CPT «lecture» использовать этот шаблон? Если это так, просто переименуйте файл single-lecture.php и поместите его в корневой каталог вашей темы, а WP будет автоматически использовать его из-за его иерархии шаблонов.

Если вместо этого вы пытаетесь назначить этот настраиваемый шаблон на выбранные вручную страницы, везде, где вы регистрируете свой тип сообщения, добавьте поддержку «атрибутов страницы» и установите шаблон в качестве настраиваемого шаблона, добавив комментарии вверху.

КПП:

 register_post_type('lecture'), array(... ... 'supports' => array('title', 'editor', 'page-attributes'), ); 

Шаблон:

 <?php /* * Template Name: Customized Lecture */ ... 

Возможно, вам придется отменить регистрацию своего CPT, а затем перерегистрировать его с помощью этого нового кода, чтобы WP распознал новые атрибуты. После того, как ваш CPT будет иметь «атрибуты страницы», вы увидите новый раскрывающийся список на экране редактирования сообщений, как вы видите на страницах, который позволяет вам выбрать шаблон. Затем вы можете выбрать свой шаблон любым именем, которое вы использовали в комментариях в верхней части файла.