WordPress - 在管理区域的页面上显示发布内容和发布元

时间:2012-03-01 13:37:50

标签: wordpress-theming wordpress

我正在尝试在我的WordPress管理区域中创建一个页面,该页面以表格式布局显示帖子和各种自定义字段元的摘录。

如果这是一个前端WordPress模板,我可以使用WordPress循环和查询轻松完成此操作,但是,我不太确定如何在管理区域的页面上执行此操作。

它会是相同的,还是需要使用全新的方法?如果是这样,有人可以提供一个如何做到这一点的工作实例吗?

管理页面将使用我的functions.php中的包含文件创建 - 或者至少是目前的计划,所以我只需要帮助找出如何拉动WordPress摘录和发布元。

2 个答案:

答案 0 :(得分:3)

你可以在每次WordPress初始化后使用WP_Query object,所以如果你愿意,如果你想这样做,你甚至可以在WordPress后端制作成千上万的嵌套查询。

这是要走的路:

  1. 创建添加后端页面的操作 - 编写插件或将其放入您的functions.php

  2. 设置菜单页面 - 代码是主题的完整后端管理页面的示例

  3. 使用WP_Query对象包含您的查询 - 可选择直接进行数据库查询(http://codex.wordpress.org/Displaying_Posts_Using_a_Custom_Select_Query)。可能使用“widefat”类的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;
            }
    

答案 1 :(得分:2)

在循环外你需要使用

$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'];
}