Расширенные Настраиваемые Поля - Получить пользовательские поля с родительской страницы


Я использую расширенные настраиваемые поля, облегчающие моему клиенту управление его контентом.

На всех моих дочерних и родительских страницах я хотел бы иметь одинаковое изображение заголовка и информацию на боковой панели.

Несмотря на то, что я хочу, чтобы "Родительская страница № 1" и "Родительская страница № 2" содержали различную информацию, и Клиент управляет этим с помощью расширенных настраиваемых полей.

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

Родительская страница #1

  • Дочерняя страница №1 - Должна получать пользовательские значения полей из "Родительской страницы 1"
  • Дочерняя страница №2 - Должна получить значения настраиваемых полей из "Родительской страницы 1"
  • Дочерняя страница #3 - Должна получить значения настраиваемых полей из "Родительской страницы 1"

Родительская страница #2

  • Дочерняя страница №1 - Должна получить значения настраиваемых полей из "Родительской страницы 2"
  • Дочерняя страница №2 - Должна получить значения настраиваемых полей из "Родительской страницы 2"
  • Дочерняя страница #3 - Должна получить значения настраиваемых полей из "Родительской страницы 2"

Итак, вот мой вопрос.

В моем "шаблоне родительской страницы" я использую следующее для создания изображения:

<img src="<?php the_field('header_image'); ?>">

Итак, как мне в моем "Шаблоне дочерней страницы" получить поле "заголовок-изображение" из родительская страница дочерней страницы?

Author: Mikkel Tschentscher, 2013-08-23

3 answers

В своем цикле вы можете получить доступ к идентификатору родительской страницы с помощью $post->post_parent.

Вам просто нужно передать это значение в качестве второго параметра:

<img src="<?php the_field('header_image', $post->post_parent ); ?>">
 8
Author: RRikesh, 2013-08-23 14:55:39

Как насчет:

<img src="<?php $parent_header_image = get_post_meta($post->post_parent, 'header_image', true); echo $parent_header_image;?>">

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

 1
Author: Angelique, 2013-08-23 14:53:11

К моменту включения файла шаблона запрос для страницы уже выполнен, и глобальная переменная $post содержит объект WP_Post. Вот пример дампа $post:

WP_Post::__set_state(array(
   'ID' => 3440,
   'post_author' => '1',
   'post_date' => '2013-08-19 13:06:04',
   'post_date_gmt' => '2013-08-19 13:06:04',
   'post_content' => '',
   'post_title' => 'Models',
   'post_excerpt' => '',
   'post_status' => 'publish',
   'comment_status' => 'open',
   'ping_status' => 'closed',
   'post_password' => '',
   'post_name' => 'models',
   'to_ping' => '',
   'pinged' => '',
   'post_modified' => '2013-08-23 14:32:57',
   'post_modified_gmt' => '2013-08-23 14:32:57',
   'post_content_filtered' => '',
   'post_parent' => 3442,
   'guid' => 'http://charlesclarkson.com/?page_id=3440',
   'menu_order' => 0,
   'post_type' => 'page',
   'post_mime_type' => '',
   'comment_count' => '0',
   'filter' => 'raw',
   'format_content' => NULL,
))

Как вы можете видеть из списка, в этом объекте есть свойство с именем post_parent. Чтобы получить к нему доступ, используйте $post->post_parent. На страницах верхнего уровня для родительской записи установлено значение '0'.

В соответствии с документами ACF для the_field(), существует второй параметр для передачи идентификатора записи в функция.

Предполагая, что код в шаблоне вашей страницы не связан с $post:

<img src="<?php the_child_or_parent_image_src(); ?>">

<?php
function the_child_or_parent_image_src() {
    global $post;

    if ( $post->post_parent )
        the_field( 'header_image',  $post->post_parent );

    the_field( 'header_image' );
}
?>

( Примечание: Код недостаточно хорошо протестирован.)

 1
Author: Charles Clarkson, 2013-08-23 14:57:33