Домашняя страница Wordpress с последними сообщениями и расширенными настраиваемыми полями - как?

Я бы хотел, чтобы на моей домашней странице отображались мои последние сообщения, которые являются моими портфельными проектами. Под миниатюрами этих проектов у меня есть статический контент, который я использую с помощью надстройки Repeater из Advanced Custom Fields для захвата. Я не могу заставить все это работать на одной странице ... либо заставить работать блог, либо работу ACF. Никогда и то и другое, потому что одна должна быть назначенной статической страницей, а другая - страницей сообщений. Я не понимаю, как связать это вместе и сделать так, чтобы это выглядело как одна страница.

Я экспериментировал с настройками на панели чтения .. Я пробовал использовать front-page.php Я читал об иерархии WP и т. д. Я пробовал использовать шаблоны ... Я пробовал wp_reset_postdata();, о котором я читал в другом месте на Stack Overflow.

Какие настройки я должен использовать в панели чтения. Мне нужно использовать файл шаблона?

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

<!-- The posts/portfolio items -->

<?php get_header(); ?>   
<div>
<?php if(have_posts()) : ?>
    <ul>
    <?php while ( have_posts() ) : the_post(); ?>
        <li>
            <!-- Permalink,title and post thumbnail here (omitted) -->
        </li>
    <?php endwhile; ?>
    </ul>
   <?php else: ?>
<h2>No Posts found</h2>
<?php endif; ?>
</div>


<!-- Now for the ACF Stuff -->

<?php if(get_field('care_list')): ?>
    <?php while(has_sub_field('care_list')): ?>

        <div class="grid_2 what-i-care-about gap">
           <div class="important-img-container">
           <?php the_sub_field('care_list_image'); ?>
        </div>
           <h3><?php the_sub_field('care_list_title'); ?></h3>
        </div>
    <?php endwhile; ?>
<?php endif; ?>

<?php get_footer(); ?>

Пожалуйста, помогите расстроенному ученику! Заранее спасибо.


person Allan Crabtree    schedule 08.10.2013    source источник
comment
Хорошо, я исправил это, но я думаю, что это можно улучшить? Я добавил все свои проекты в категорию под названием «Портфолио» и включил это перед if (have_posts): <?php query_posts( array ( 'category_name' => 'Portfolio', 'posts_per_page' => -1 ) ); ?>. Затем после цикла я использовал wp_reset_query();. Судя по всему, Wordpress не очень рекомендует этот способ.   -  person Allan Crabtree    schedule 09.10.2013


Ответы (2)


Похоже, вам нужно будет добавить идентификатор публикации вашей «домашней страницы» (той, на которой есть повторитель ACF) в функцию get_field() следующим образом:

<?php $post_id = **post_id_of_your_homepage_here**; ?>
<?php if(get_field('care_list', $post_id)): ?>
<?php while(has_sub_field('care_list')): ?>

    <div class="grid_2 what-i-care-about gap">
       <div class="important-img-container">
       <?php the_sub_field('care_list_image'); ?>
    </div>
       <h3><?php the_sub_field('care_list_title'); ?></h3>
    </div>
<?php endwhile; ?>

Это связано с тем, что параметр $post_id по умолчанию соответствует текущему сообщению, создаваемому wordpress, что означает, что ACF ищет повторителя на последнем элементе / сообщении портфолио, которое вы показываете. Если вы установите для параметра $post_id идентификатор вашей домашней страницы, ACF вместо этого будет искать повторитель на этой странице.

Источник: http://www.advancedcustomfields.com/resources/functions/get_field/#parameters

person Nate F.    schedule 08.11.2013
comment
@ Allan-Crabtree, это может помочь ... чтобы использовать этот код на главной странице вашей установки WordPress, вы можете выполнить следующие шаги: 1) создать новую страницу. 2) зайдите в настройки- ›чтение и выберите новую страницу в качестве первой. 3) создайте шаблон страницы и добавьте в него свой код. 4) перейдите в редактор страниц для страницы, которую вы установили как главную, и выберите новый шаблон в разделе атрибутов страницы. - person Nate F.; 11.11.2013

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

Шаг 1. Создайте новый шаблон страницы, скопировав page.php, изменив имя на homepage.php и добавив его вверху:

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

Шаг 2: Создайте страницу Wordpress под названием «Домашняя страница» и в модуле атрибутов на правой боковой панели инструмента создания страницы выберите «Домашняя страница» в качестве шаблона страницы.

Шаг 3. В настройках чтения измените первую страницу со страницы сообщений на «Домашнюю страницу». Теперь ваша домашняя страница - это ваша страница под названием «Домашняя страница».

Шаг 4: Сделайте что-то вроде этого полного кода на вашем новом шаблоне страницы homepage.php. Он выведет ваш список сообщений, за которым следует настраиваемое поле вашей страницы:

<?php get_header(); ?>

<?php $the_query = new WP_Query( $args );

<?php if ( $the_query->have_posts() ) : ?>
    <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
        <h2><?php the_title(); ?></h2>
        <?php the_post_thumbnail(); ?>
    <?php endwhile; ?>
    <?php wp_reset_postdata(); ?>
<?php endif; ?>

<?php if(get_field('repeater_field_name')): ?>
    <?php while(has_sub_field('repeater_field_name')): ?>
        <?php the_sub_field('sub_field_1'); ?>
    <?php endwhile; ?>
<?php endif; ?>

<?php get_footer(); ?>
person scmccarthy22    schedule 19.01.2015