自定义查询的Wordpress分页

时间:2015-06-07 02:09:42

标签: pagination wordpress-plugin wordpress

我正在尝试编写一个基于通过表单提供的输入搜索SQL表的插件。我的代码是......

                global $table_name_log;
                $pagenum = isset( $_GET['pagenum'] ) ? absint( $_GET['pagenum'] ) : 1;
                $limit = 25;
                $offset = ( $pagenum - 1 ) * $limit;

                $l_task=isset( $_POST['l_task'] ) ? $_POST['l_task'] : "a";
                $l_val=$_POST['l_val']; if($l_val=="") { $l_task="a"; }
                if($l_task=="d")
                {
                    $criteria="where log.Doc_Number='{$l_val}'";
                }
                elseif($l_task=="e")
                {
                    $criteria="where log.Employee='{$l_val}'";
                }
                else
                {
                    $criteria="";
                }
                    $SQLQuery="SELECT em.ID, log.Date, em.Payroll, log.Doc_Number, doc.Doc_Name, doc.Replaced_By, log.Trainer, log.Log, log.Type
                            FROM {$table_name_log} log
                            join {$table_name_employee} em on log.Employee=em.ID
                            join {$table_name_documents} doc on log.Doc_Number=doc.Doc_Number
                            {$criteria}
                            order by log.Employee asc
                    ";

                //Get total number of results
                $results=$wpdb->get_results("{$SQLQuery}",ARRAY_A);
                $search_total = $wpdb->num_rows;

                //Limit results by page
                $results=$wpdb->get_results("{$SQLQuery} LIMIT {$offset}, {$limit}",ARRAY_A);
                if(! $results)
                {
                    if($pagenum>1)
                    {
                        $pagenum=1;
                        $results=$wpdb->get_results("{$SQLQuery} LIMIT 0, {$limit}",ARRAY_A);
                    }
                }

然后我显示查询的结果。 在显示结果的底部,我有这个代码...

                $total=$search_total;
                $num_of_pages = ceil( $total / $limit );
                $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>';
                }

问题是虽然正确计算了页数,但第1页显示的结果正确;选择其他页面时,它会显示结果,但不会$criteria设置$l_task。如何编辑代码以便分页链接提供正确的查询以用于其他页面?

1 个答案:

答案 0 :(得分:0)

现在通过在顶部添加这个...

'add_args' => array( 'l_task' => $_POST['l_task'], 'l_val' => $_POST['l_val'] )

然后我添加了这个...

$page_links = paginate_links( array(
    'base' => add_query_arg( 'pagenum', '%#%' ),
     'format' => '',
     'prev_text' => __( '&laquo;', 'aag' ),
     'next_text' => __( '&raquo;', 'aag' ),
     'total' => $num_of_pages,
     'current' => $pagenum,
     'add_args' => array( 'l_task' => $_POST['l_task'], 'l_val' => $_POST['l_val'] )
) );

为...

sum