在Wordpress中列出自定义数据

时间:2012-10-12 23:34:29

标签: wordpress wordpress-plugin

我正在开发一个拥有自己的表的插件。我需要在Wordpress前端显示表格中的数据(例如:类别页面)。我不需要使用posts表来加入这个表,我只需要从表中显示数据,并使用分页。我需要一个单独的页面/自定义模板来自我的插件目录(在MVC框架 - 控制器的上下文中讨论),应该在其上显示和分页这些数据。

请给我一个建议,实施它的最佳做法是什么?

感谢。

1 个答案:

答案 0 :(得分:3)

如果我理解了您的问题,那么我认为您需要添加template_include挂钩以使用插件目录中的自定义模板/页面,您可以这样做

add_filter('template_include', 'my_template', 1, 1); 
function my_template($template) { 
    global $post; 
    if($post->post_content == '[myPluginPage]') 
        return dirname(__FILE__) . '/my_pligin_template.php'; 
        return $template; 
}

您应该将上面给出的代码粘贴到插件文件中,并在插件文件夹中创建一个名为my_pligin_template.php的文件或任何您想要的文件,但在这种情况下,在第一个return语句中您必须更改文件名太。

现在,您必须在wordpress admin中创建一个页面,以在菜单栏中显示该页面,然后粘贴[myPluginPage]作为内容。注意if($post->post_content == '[myPluginPage]'),这将检查是否是您的插件页面,无论您何时单击任何菜单项,如果它在内容中找到单词[myPluginPage],那么它将返回自定义模板,您将在那页。

现在您需要从数据库中获取数据并执行此操作,您应该在此自定义模板文件(my_pligin_template.php)中编写代码。要做到这一点,你可以写

global $wpdb;
$pagenum = isset( $_GET['pagenum'] ) ? absint( $_GET['pagenum'] ) : 1;
$limit = 10;
$offset = ($pagenum-1) * $limit;
$total = $wpdb->get_var( "SELECT COUNT(*) FROM yourtable" );
$num_of_pages = ceil( $total / $limit );

$qry="select * from yourtable LIMIT $offset, $limit";
$result=$wpdb->get_results($qry);
if($result):
    foreach($result as $row)
    {
        // code here
    }

    //Link for Pagination
    $page_links = paginate_links( array(
        'base' => add_query_arg( 'pagenum', '%#%' ),
        'format' => '',
        'prev_text' => __( '«', 'aag' ),
        'next_text' => __( '»', 'aag' ),
        'total' => $num_of_pages,
        'current' => $pagenum
    ) );
    if ( $page_links ) {
        echo '<div class="tablenav"><div class="tablenav-pages" style="margin: 1em 0">' . $page_links . '</div></div>';
    }
endif;