Как получить текущий ID страницы и использовать его в функции get_page?
Пример кода:
$page_id = 116; // 123 должен быть заменен на конкретный ID страницы с вашего сайта, который можно найти, наведя курсор на ссылку редактирования страницы в админ-панели. ID будет в строке запроса URL, например, page.php?action=edit&post=123.
$page_data = get_page( $page_id ); // Вы должны передать переменную в функцию get_page. Если передать значение напрямую (например, get_page ( 123 ); ), WordPress выдаст ошибку.
$content = apply_filters('the_content', $page_data->post_content); // Получаем контент и сохраняем фильтры WordPress, такие как теги параграфов. Источник: http://wordpress.org/support/topic/get_pagepost-and-no-paragraphs-problem
$title = $page_data->post_title; // Получаем заголовок
echo $title; // Выводим заголовок
echo $content; // Выводим контент
?>
Вместо 166
(который был введен вручную), я хотел бы получить ID текущей страницы.
Когда я использую $page_id = $post -> ID, он получает заголовок и содержимое первого поста из цикла ниже (это страница записей):
<div class="container">
<?php // находим весь контент, который имеет тип видео, а затем делаем по нему цикл ?>
<?php query_posts('showpost'); ?>
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<?php if ( is_front_page() ) { ?>
<h2 class="entry-title"><?php the_title(); ?></h2>
<?php } else { ?>
<h1 class="entry-title"><?php the_title(); ?></h1>
<?php } ?>
<div class="entry-content">
<?php the_content(); ?>
<?php wp_link_pages( array( 'before' => '<div class="page-link">' . __( 'Pages:', 'twentyten' ), 'after' => '</div>' ) ); ?>
<?php edit_post_link( __( 'Edit', 'twentyten' ), '<span class="edit-link">', '</span>' ); ?>
</div><!-- .entry-content -->
</div><!-- #post-## -->
<?php comments_template( '', true ); ?>
<?php endwhile; ?>
</div>
Я хотел бы динамически получить код текущей страницы (который равен 116).
Какой код нужен для этого?

Из быстрого теста $wp_query->get_queried_object_id()
должен получать ID страницы, когда эта страница установлена как страница записей.
Вероятно, проблема заключается в выборе правильного момента времени - достаточно позднего, чтобы данные были доступны, но достаточно раннего, чтобы цикл записей не мешал. Я бы попробовал получить это значение раньше (в хуке template_redirect
или около того) и сохранить в глобальной переменной для последующего использования.

Есть два метода в зависимости от того, выполняете ли вы это внутри или вне цикла.
Внутри цикла:
$page_id = $post->ID;
(как вы уже упоминали, без успеха, поэтому я предположу, что вы пытаетесь использовать альтернативный вариант, который...)
Вне цикла:
$page_id = $wp_query->post->ID;

Неважно, что я делаю, он всё равно выводит записи из цикла, который находится ниже этой функции.

Если вы используете этот второй блок кода на той же странице, где находится функция get_page, то, скорее всего, проблема в функции query_posts, которая всё нарушает. Вам нужно либо создать пользовательский запрос, либо сбросить цикл. Попробуйте закомментировать второй блок в шаблоне (чтобы предотвратить выполнение PHP-кода) и посмотрите, поможет ли это.

Для тех, у кого это всё ещё не работает, вам нужно использовать какой-либо add_action
(вы можете выбрать, какой именно хотите использовать). В моём примере это будет возвращать ID текущей страницы без каких-либо проблем, независимо от того, находится ли код в папке плагина, functions.php или где-либо ещё.
add_action('template_redirect', 'showid');
function showid(){
global $wp_query;
$theid = intval($wp_query->queried_object->ID);
echo $theid;
}
Удачи и приятного программирования!
