WP Data Access version 3 allows you to add your own search logic through a filter named wpda_construct_where_clause. The search logic provided through this filter is used in all tools. To allow developers to add search logic for specific tables or columns only, the filter allows to return a null value to indicate that the plugin should continue with its own default search logic.
Example search on text columns #
function my_search_logic( $where, $schema_name, $table_name, $columns, $search ) {
global $wpdb;
$where_columns = [];
foreach ( $columns as $column ) {
if ( 'string' === WPDA::get_type( $column['data_type'] ) ) {
$where_columns[] = $wpdb->prepare(
"`{$column['column_name']}` like '%s'", '%' . esc_attr( $search ) . '%'
); // WPCS: unprepared SQL OK.
}
}
if ( 0 === count( $where_columns ) ) {
return ' (1=2) ';
}
return ' (' . implode( ' or ', $where_columns ) . ') ';
}
add_filter('wpda_construct_where_clause','my_search_logic',10,5);
Example search on specific table #
function my_search_logic( $where, $schema_name, $table_name, $columns, $search ) {
if ( 'my_schema' === $schema_name && 'my_table' === $table_name ) {
// You table specific logic goes here...
return $my_where_clause;
} else {
return null; // Use default plugin search logic for all other tables
}
}
add_filter('wpda_construct_where_clause','my_search_logic',10,5);
Parameters #
Associative array containing the following column info taken from the data dictionary:
$columns[‘column_name’] => information_schema.tables.column_name
$columns[‘data_type’] => information_schema.tables.data_type
$columns[‘extra’] => information_schema.tables.extra
$columns[‘column_type’ => information_schema.tables.column_type
$columns[‘is_nullable’ => information_schema.tables.is_nullable
$columns[‘column_default’] => information_schema.tables.column_default
$search
Search string entered by user
$table_name
Table name for which the search logic is provided
$schema_name
Schema in which the table is stored