ambo
  • 0
Новичок

Шаблон пользовательской страницы закрыт

  • 0
  1. Какую тему вы используете? Проще всего работать с существующим шаблоном, чтобы все соответствовало остальному сайту. Если есть в открытом доступе, дайте ссылку.

    • 0
  2. Хорошо, первый шаг — создать шаблон страницы, это простая часть, и здесь не требуется никаких манипуляций с запросом, вы не меняете запрос, просто просматриваете страницу, которая уже находится в запросе, так что это простой случай создание базового цикла, например… (отметив, что я поместил специальный комментарий шаблона страницы вверху кода).

    ПРИМЕЧАНИЕ. Когда вы сохраняете этот файл в папке вашей темы, не давайте ему имя файла шаблона темы, поэтому не называйте его category.php или archive.php (любое имя файла, характерное для тем WordPress), вместо этого используйте что-то уникальное, например. customfields-template.php (или что угодно).

    <?php
    /**
     * Template Name: CustomField Table
     */
    get_header(); 
    ?>
    
    <div id="container">
        <div id="content">
    
            <?php if( have_posts() ) : ?>
    
                <?php while( have_posts() ) : the_post(); ?>
    
                    <h2><?php the_title(); ?></h2>
    
                    <?php
                    // Array of custom fields to get(so enter your applicable field keys here)
                    $fields = array( 'field-one', 'field-two' );
    
                    // Array to hold data
                    $custom_fields = array();
    
                    // Loop over keys and fetch post meta for each, store into new array
                    foreach( $fields as $custom_field_key )
                        $custom_fields[$custom_field_key] = get_post_meta( $post->ID, $custom_field_key, true );
    
                    // Filter out any empty / false values
                    $custom_fields = array_filter( $custom_fields );
    
                    // If we have custom field data 
                    if( !empty( $custom_fields ) )
                        $c = 0;
                    ?>
                    <table>
                        <thead>
                            <tr>
                                <th>Field</th>
                                <th>Value</th>
                            </tr>
                        </thead>
                        <tbody>
                            <?php foreach( $custom_fields as $field_name => $field_value ) : $c++; ?>
                            <tr<?php echo ( $c % 2 == 0 ) ? ' class="alt"' : '' ; ?>>
                                <td><?php echo $field_name ?></td>
                                <td><?php echo $field_value ?></td>
                            </tr>
                            <?php endforeach; ?>
                        </tbody>
                        <tfoot>
                            <tr>
                                <th>Field</th>
                                <th>Value</th>
                            </tr>
                        </tfoot>
                    </table>
    
                    <div <?php post_class(); ?>><?php the_content(); ?></div>
    
                <?php endwhile; ?>
    
            <?php endif; ?>
    
        </div>
    </div>
    
    <?php get_sidebar(); ?>
    <?php get_footer(); ?>
    

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

    Подробнее об этих функциях можно узнать здесь.
    http://codex.wordpress.org/Custom_Fields#Function_Reference

    Создайте простой массив ключей настраиваемого поля для выбора данных, а затем перебирайте их, вызывая get_post_meta каждую итерацию. Соберите эти метаданные и поместите их в новый массив, чтобы впоследствии их можно было легко отфильтровать от пустых/ложных результатов (а не повторять if( $var ) или if(!empty()) вызывать).

    Затем проверьте, что в новом массиве есть некоторые данные, выведите таблицу и выполните цикл по новому массиву, чтобы построить строки данных.

    Единственное, что вам нужно изменить, это эта строка (это имена моих тестовых полей).

    $fields = array( 'field-one', 'field-two' );
    

    Так, например, чтобы получить настраиваемые поля с ключами, именем, полом, должностью и описанием..

    $fields = array( 'name', 'gender', 'job', 'description' );
    

    ПРИМЕЧАНИЯ:

    • Я позволил себе добавить чередующиеся классы в строки таблицы
    • Я предположил, что вы хотите опубликовать заголовок и содержание (удалить, если не нужно)
    • HTML-разметка основана на теме TwentyTen, если ваша тема использует другую разметку, вам нужно обновить HTML по мере необходимости (или вы можете связать меня с одной из ваших веб-страниц, и я рефакторинг образца кода для вас)
    • Я не был уверен, как вы хотите, чтобы данные отображались в таблице, поэтому, если у вас есть другое представление о том, как размещать данные в таблице, дайте мне знать, и я рефакторинг кода для вас.

    Дайте мне знать, если у вас есть какие-либо вопросы относительно кода. 🙂

    • 0

Оставить ответ

You must login to add an answer.