1

そのため、データテーブル上に構築されたイントラネット サイトを継承しています。基本的にはWordpressで作成され、ユーザーがデータテーブルに入力したカスタムフィールドが表示されます. しかし、2,000 エントリを超える投稿ごとに 40 列のクエリを実行していたため、ユーザーがテーブル内のデータを表示しようとすると、現在は停止しています。

これにはDatatablesのサーバー側の側面を利用しようとしていますが、SQLデータのフォーマット方法が原因で少し問題が発生しています。

server_processing.php ファイル (私はこれを使用しています: http://datatables.net/development/server-side/php_mysql ) を次のようにセットアップする方法について、誰でも支援を提供できますか?

  1. wp_posts.ID インデックスに基づいて行を表示します
  2. 別のテーブル (wp_postmeta) に基づいてこの行の列を表示します。各列の値は、1 で見つかった ID によって wp_postmeta テーブルで個別にインデックス付けされます。
  3. 行全体を wp_posts テーブルにある URL にリンクします

誰かに何かアイデアがあれば、本当に感謝します...

4

5 に答える 5

1

間違いなく WordPress のプラグインが最も効率的です。AJAX は、WordPress の編集機能などを使用するためのコアである JQuery と競合したり、問題を引き起こしたりする可能性があります。Simple Intranet などの有料/プレミアム イントラネット プラグインもあります。:) クリス

于 2013-01-29T22:46:39.170 に答える
0

おそらく、このプラグインに興味があるかもしれません - あなたが探しているものを正確に実行しているようです: http://wpdatatables.com

サーバー側処理の例: http://wpdatatables.com/display-mysql-table-in-wordpress/

于 2014-03-09T19:42:42.653 に答える
0

WordPress または Core PHP での Ajax dataTable またはサーバー側処理 dataTable。

HTML コード

<table id="student_table" width="100%">
    <thead>
        <tr>
            <th>Roll No.</th>
            <th>Full Name</th>
            <th>Phone</th>
            <th>Action</th>
        </tr>
    </thead>
    <tbody>

    </tbody>
    <tfoot>
        <tr>
            <th>Roll No.</th>
            <th>Full Name</th>
            <th>Phone</th>
            <th>Action</th>
        </tr>
    </tfoot>
</table>

jQuery コード

jQuery('#student_table').DataTable({
    "bProcessing": true,
    "serverSide": true,
    "ajax":{
        "url": FrontendConfig.ajaxurl+'?action=getStudentsFromExamIdAjax&exam_nounce=exam_nounce_data&exam_id=1',
        type: "post",
    }
});  

WordPress または PHP コード

add_action('wp_ajax_getStudentsFromExamIdAjax', 'getStudentsFromExamIdAjax' );
add_action('wp_ajax_nopriv_getStudentsFromExamIdAjax', 'getStudentsFromExamIdAjax' );

function getStudentsFromExamIdAjax(){
    if(empty($_GET['action']) || empty($_GET['exam_id'])){
        wp_send_json_error( new \WP_Error( 'Bad Request' ) );
    }

    if(isset($_GET['exam_id']) && $_SERVER['REQUEST_METHOD'] === 'POST' && wp_verify_nonce( $_GET['exam_nounce'], 'exam_nounce_data' )):

        $exam_id = (isset($_GET['exam_id'])) ? absint($_GET['exam_id']) : '';

        /*@ You can create a function to get the data here */
        $students = getStudentsFromExamId($exam_id);

        $tdata = [];
        foreach ($students as $key => $value):
            $tdata[$key][] = $value->roll_no;
            $tdata[$key][] = $value->name;
            $tdata[$key][] = $value->phone;
            $tdata[$key][] = 'action here';
        endforeach;

        $total_records = count($tdata);

        $json_data = array(

            /* $_REQUEST['draw'] comes from the datatable, you can print to ensure that */

            "draw"            => intval( $_REQUEST['draw'] ), 
            "recordsTotal"    => intval( $total_records ),
            "recordsFiltered" => intval( $total_records  ),
            "data"            => $tdata
        );

        echo json_encode($json_data);
    endif;

    wp_die();
}
于 2019-10-16T18:33:01.897 に答える