Wordpress data not appearing using Editor Datable with server side processing
Wordpress data not appearing using Editor Datable with server side processing
looqstudio
Posts: 4Questions: 0Answers: 0
I've been trying to get the editor table to pull through data from my WordPress posts.
I eventually want to only get a specific post type. But for the time being, I can't even get any data to display.
I've been able to recreate the example files on my own WordPress page, so I know that I've installed the editor correctly.
I don't know what I'm missing from my code. Any help in the right direction would be much appreciated.
HTML:
<table id="example" class="display" cellspacing="0" width="100%">
<thead>
<tr>
<th></th>
<th>Type</th>
<th>Status</th>
<th>Name</th>
</tr>
</thead>
<tfoot>
<tr>
<th></th>
<th>Type</th>
<th>Status</th>
<th>Name</th>
</tr>
</tfoot>
</table>
Javascript:
<script>
var editor; // use a global for the submit and return data rendering in the examples
$(document).ready(function() {
editor = new $.fn.dataTable.Editor( {
ajax: "https://emotiondevolp.wpengine.com/Editor-PHP-2.0.8/controllers/all_post_table.php",
table: "#example",
fields: [ {
label: "Type:",
name: "wm_ew_posts.post_type"
}, {
label: "Status:",
name: "wm_ew_posts.post_status"
}, {
label: "Name:",
name: "wm_ew_users.display_name"
},
]
} );
// Activate an inline edit on click of a table cell
$('#example').on( 'click', 'tbody td:not(:first-child)', function (e) {
editor.inline( this, {
onBlur: 'submit'
} );
} );
$('#example').DataTable( {
dom: "Bfrtip",
ajax: {
url: "https://emotiondevolp.wpengine.com/Editor-PHP-2.0.8/controllers/all_post_table.php",
type: 'POST'
},
columns: [
{
data: null,
defaultContent: '',
className: 'select-checkbox',
orderable: false
},
{ data: "wm_ew_posts.post_status" },
{ data: "wm_ew_posts.post_type" },
{ data: "wm_ew_posts.post_author" },
{ data: "wm_ew_users.display_name" }
],
buttons: [
{ extend: "create", editor: editor },
{ extend: "edit", editor: editor },
{ extend: "remove", editor: editor }
]
} );
} );
</script>
Server Script:
<?php
// DataTables PHP library
include( "../lib/DataTables.php" );
// Alias Editor classes so they are easy to use
use
DataTables\Editor,
DataTables\Editor\Field,
DataTables\Editor\Format,
DataTables\Editor\Mjoin,
DataTables\Editor\Options,
DataTables\Editor\Upload,
DataTables\Editor\Validate,
DataTables\Editor\ValidateOptions;
/*
* Example PHP implementation used for the join.html example
*/
Editor::inst( $db, 'wm_ew_posts' )
->field(
Field::inst( 'wm_ew_posts.post_status' ),
Field::inst( 'wm_ew_posts.post_type' ),
Field::inst( 'wm_ew_posts.post_author' ),
->options( Options::inst()
->table( 'wm_ew_users' )
->value( 'ID' )
->label( 'display_name' )
)
->validator( Validate::dbValues() ),
Field::inst( 'wm_ew_users.display_name' )
)
->leftJoin( 'wm_ew_users', 'wm_ew_users.ID', '=', 'wm_ew_posts.post_author' )
->process($_POST)
->json();
Replies
Is returning an empty response. That presumably isn't expected? Or would I need to be logged in to see a response?
Allan
Hey Allan,
I'm getting the same empty response when I'm logged in.
I'm guessing the type of data, that I'm trying to get should only be visible to admins in the backend of WordPress.
So am I missing something in the server-side script to get WordPress post-type data?
I can record a quick video, showing my setup including the database.
I'd suggest checking the server's error logs, or enabling all debug output using:
to see if there is an error being reported.
Allan
Do I just add the above code to the end of my server-side script?
No - at the start of it, immediately after the opening
<?php
.Allan
I've done that, but I don't see any new error message
I think in that case you’d need to check your web server’s error logs to see if there is anything reported there. Those two lines should really show any error messages - but they can be overridden with certain PHP configurations.
Allan