WordPress - отображение содержимого публикации и размещение мета на странице в административной области - PullRequest
0 голосов
/ 01 марта 2012

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

Если бы это был шаблон WordPress внешнего интерфейса, я мог бысделать это очень легко, используя WordPress Loop and Query, однако я не совсем уверен, как бы я поступил на странице в административной области.

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

Страница администратора будет создана с использованием включенного файла в моем файле functions.php - или, по крайней мере, это план на данный момент,так что мне просто нужна помощь в выяснении того, как вытащить выдержки из WordPress и опубликовать мету.

Ответы [ 2 ]

3 голосов
/ 08 марта 2012

вы можете использовать объект WP_Query каждый раз после инициализации WordPress, так что если вы хотите, вы можете даже сделать тысячи вложенных запросов в ден WordPress, если вы хотите это сделать.

Это путь:

  1. Создайте действие, чтобы добавить свою внутреннюю страницу - напишите плагин или вставьте его в свои functions.php

  2. Настройка страницы меню - код является примером для страницы полного администрирования вашей темы

  3. Включайте ваши запросы с использованием объекта WP_Query - при необходимости выполняйте запросы к базе данныхнапрямую (http://codex.wordpress.org/Displaying_Posts_Using_a_Custom_Select_Query). Возможно, используйте «широкоформатный» класс WordPress для удобного форматирования.

  4. Убедитесь, что ваши изменения сохранены правильно

            add_action('admin_menu', 'cis_create_menu');
    
            function cis_create_menu() {
    
                //create new top-level menu
                add_menu_page(__('Theme Settings Page',TEXTDOMAIN),__('Configure Theme',TEXTDOMAIN), 'administrator', __FILE__, 'cis_settings_page', ''); 
    
                //call register settings function
                add_action('admin_init','cis_register_settings');
            }
    
    
            function cis_register_settings() {
                register_setting('cis-settings-group','cis_options_1','cis_validate_settings');
            }
    
    
            function cis_settings_page() {
    
                // All Text field settings
                $op_fields = array(
                    array(__('Label 1','textdomain'),"Description 1")
                );
    
            ?>
            <div class="wrap">
                <h2><?php echo THEME_NAME; _e(": Settings",TEXTDOMAIN); ?></h2>
    
                <?php 
                settings_errors();
                ?>
    
                <form method="post" action="options.php">
                    <?php 
                        settings_fields( 'cis-settings-group' );
                        $options = get_option('cis_options_1');
                    ?>
                    <h3><?php _e('General','textdomain'); ?></h3>
                    <table class="widefat">
                        <thead>
                            <tr valign="top">
                                <th scope="row"><?php _e('Setting','ultrasimpleshop'); ?></th>
                                <th scope="row"><?php _e('Value','ultrasimpleshop'); ?></th>
                                <th scope="row"><?php _e('Description','ultrasimpleshop'); ?></th>
                                <th scope="row"><?php _e('ID','ultrasimpleshop'); ?></th>
                            </tr>
                        </thead>
                        <tbody>
                        <?php 
                        // the text-settings we define fast display
                        $i=1;
                        foreach($op_fields as $op) {?>
                            <tr valign="top">
                                <td><label for="cis_oset_<?php echo $i; ?>"><?php echo $op[0]; ?></label></td>
                                <td><input size="100" id="cis_oset_<?php echo $i; ?>" name="cis_options_1[cis_oset_<?php echo $i; ?>]" type="text" value="<?php echo esc_attr($options['cis_oset_'.$i]);?>" /></td>
                                <td class="description"><?php echo $op[1]; ?></td>
                                <td class="description"><?php echo $i; ?></td>
                            </tr>
                            <?php 
                            $i++;
                        } ?>
                        </tbody>
                    </table>
    
                    <p class="submit">
                    <input type="submit" class="button-primary" value="<?php _e('Save Changes',TEXTDOMAIN) ?>" /> 
                    </p>
    
                </form>
            </div>
            <?php }
    
            // Validate the user input - if nothing to validate, just return
            function cis_validate_settings( $input ) {
    
                $valid = array();
                $i= 1;
                while(isset($input['cis_oset_'.$i])) {
                    $valid['cis_oset_'.$i] = $input['cis_oset_'.$i];
                    $i++;
                }
    
                $cis_additional_settings = get_option('cis_options_1');
    
                foreach($input as $ikey => $ivalue) {
                    if($ivalue != $valid[$ikey]) {
                        add_settings_error(
                            $ikey, // setting title
                            "cis_oset_".$ikey, // error ID
                            str_replace("%s",$ikey,__('Invalid Setting in Settings Area ("%s"). The value was not changed.',TEXTDOMAIN)), // error message
                            'error' // type of message
                        );
                        $valid[$ikey] = $cis_additional_settings[$ikey];
                    }
                }
    
                return $valid;
            }
    
2 голосов
/ 07 марта 2012

вне цикла, вам нужно использовать

$post->post_excerpt

или попробовать это

function get_the_excerpt_here($post_id)
{
  global $wpdb;
  $query = "SELECT post_excerpt FROM $wpdb->posts WHERE ID = $post_id LIMIT 1";
  $result = $wpdb->get_results($query, ARRAY_A);
  return $result[0]['post_excerpt'];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...