php – 从WP_List_Table代码处理WordPress中的搜索
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 从WP_List_Table代码处理WordPress中的搜索,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2599字,纯文字阅读大概需要4分钟。
内容图文
![php – 从WP_List_Table代码处理WordPress中的搜索](/upload/InfoBanner/zyjiaocheng/733/ef582b51c57e445da35a28ccad17c7ce.jpg)
我需要使用WP_List_Table添加对搜索或过滤项目的支持我读过并且不知道如何完成这项工作.我已经通过以下代码添加了该框:
function ft_list()
{
echo '</pre><div class="wrap"><h2>' . __('Frequent Traveler List') . '</h2>';
$ftList = new FT_WP_Table();
$ftList->search_box('search', 'search_id');
echo '</div>';
}
这就是我的prepare_items()函数的外观:
public function prepare_items()
{
$searchcol = array(
'firstname',
'lastname',
'foid',
'no_frequent',
'create_time'
);
$columns = $this->get_columns();
$hidden = array();
$sortable = $this->get_sortable_columns();
$this->_column_headers = array(
$columns,
$hidden,
$sortable
);
// SQL results
$posts = $this->get_sql_results();
empty($posts) AND $posts = array();
# >>>> Pagination
$per_page = $this->posts_per_page;
$current_page = $this->get_pagenum();
$total_items = count($posts);
$this->set_pagination_args(array(
'total_items' => $total_items,
'per_page' => $per_page,
'total_pages' => ceil($total_items / $per_page)
));
$last_post = $current_page * $per_page;
$first_post = $last_post - $per_page + 1;
$last_post > $total_items AND $last_post = $total_items;
// Setup the range of keys/indizes that contain
// the posts on the currently displayed page(d).
// Flip keys with values as the range outputs the range in the values.
$range = array_flip(range($first_post - 1, $last_post - 1, 1));
// Filter out the posts we're not displaying on the current page.
$posts_array = array_intersect_key($posts, $range);
# <<<< Pagination
// Prepare the data
$permalink = __('Edit:');
foreach ($posts_array as $key => $post) {
$link = get_edit_post_link($post->id);
$no_title = __('No title set');
$title = !$post->firstname ? "<em>{$no_title}</em>" : $post->firstname;
$posts[$key]->firstname = "<a title='{$permalink} {$title}' href='{$link}'>{$title}</a>";
}
$this->items = $posts_array;
}
我应该在哪里添加代码来根据搜索参数过滤项目?
解决方法:
看看扩展WP_List_Table的其他类我看到他们使用类似的东西
$search = ( isset( $_REQUEST['s'] ) ) ? $_REQUEST['s'] : false;
并将其传递给prepare_items()方法.
在我的测试插件中,我做了这个(见Percent in wpdb->prepare):
$search = ( isset( $_REQUEST['s'] ) ) ? $_REQUEST['s'] : false;
$do_search = ( $search ) ? $wpdb->prepare(" AND post_content LIKE '%%%s%%' ", $search ) : '';
$sql_results = $wpdb->get_results("
SELECT $sql_select
FROM $wpdb->posts
WHERE post_status = 'publish'
$do_search
ORDER BY $this->orderby $this->order "
);
在display_tablenav()方法中我添加了:
<form action="" method="GET">
<?php
$this->search_box( __( 'Search' ), 'search-box-id' );
?>
<input type="hidden" name="page" value="<?= esc_attr($_REQUEST['page']) ?>"/>
</form>
我没有创建任何search_box()方法,让父类渲染它.
内容总结
以上是互联网集市为您收集整理的php – 从WP_List_Table代码处理WordPress中的搜索全部内容,希望文章能够帮你解决php – 从WP_List_Table代码处理WordPress中的搜索所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。