【问题标题】:Wordpress Pagination with Custom Query带有自定义查询的 Wordpress 分页
【发布时间】:2015-06-07 02:09:42
【问题描述】:

我正在尝试编写一个插件,该插件根据通过表单提供的输入来搜索 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 987654324 @的结果。如何编辑代码以便分页链接提供正确的查询以用于其他页面?

【问题讨论】:

    标签: pagination wordpress


    【解决方案1】:

    现在通过在顶部添加它来工作......

    if(isset($_GET['l_task'])) { $_POST['l_task']=$_GET['l_task']; }
    if(isset($_GET['l_val'])) { $_POST['l_val']=$_GET['l_val']; }
    

    然后我添加了这个...

    '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'] )
    ) );
    

    【讨论】:

      猜你喜欢
      • 2013-07-28
      • 2021-07-25
      • 1970-01-01
      • 1970-01-01
      • 2012-01-18
      • 2015-02-02
      • 1970-01-01
      • 1970-01-01
      • 2015-09-18
      相关资源
      最近更新 更多