给插件Randomize增加功能:模糊查询记录
 doctorrm      2019-01-03 13:59:23      296      0      

插件Randomize挺好用的,就是后台没有可以搜索指定记录的功能,我要做的是类似下面的结果(我已经实现),所以需要修改下插件,算是自定义吧。

可以看到插件的目录如下:

我要改的就是randomize_admin.php这个文件,要做出搜索功能,需要做UI和逻辑,不过该插件的逻辑中就有很多可以现用的东西,我只需要加一点东西即可。

找到要放置输入框和搜索按钮的地方,添加如下代码:

<input type="text"  id="input_text" placeholder="查询记录" />
<input type="submit" class="button-primary action" id="randomize_search" name="randomize_search" value="搜索" onclick="javascript:location.href='options-general.php?page=randomize&action=search&search_text='+document.getElementById('input_text').value"/>

其实很多代码是模仿上下文的代码的,这个是技巧。这就是UI的添加了,可以看到里面包含了一些js逻辑,用于点击按钮时获取输入框中的内容并调整路径,注意,前缀javascript只能用在最开头处,如果用了两次js就会出错,unexpected token之类的错,具体有知道为什么的欢迎留言。

然后看这个路径,其中的action=search是触发动作,通过简单查看代码发现有如下的逻辑:

    $action = isset($_GET['action']) ? $_GET['action'] : false;
    switch($action){
        case 'new' :
            randomize_edit();
            break;
        case 'edit' :
            $id = intval($_GET['id']);
            randomize_edit($id);
            break;
        case 'delete' :
            $id = intval($_GET['id']);
            check_admin_referer('randomize_delete'.$id);
            randomize_delete($id);
            // now display summary page
            randomize_list();
            break;
        case 'search'://我增加的
            randomize_list();
            break;
        default:
            randomize_list();
    }

可以看出PHP逻辑是将新跳转的url路径中的action关键字的值获取判断后调用相关函数,我这里的search跳转后会到randomize_list()这个函数中,所以接下来就是具体的逻辑了:

$search_text=isset($_GET['search_text'])?$_GET['search_text']:'';
//使用模糊查询
if($search_text){
        $where="WHERE text like \"%$search_text%\"";
        $page_params.='&text='.$search_text;
}

上面是在randomize_list()函数中新增的查询逻辑,可以看到是根据url中传来的搜索框的内容写SQL的条件语句,可以看到用了模糊查询%。

到此就结束了,很简单,是吧,因为很多都直接调用了原有函数和复用了逻辑,比我最开始想像的要简单。甚至不需要了解WordPress的动作触发和相关约定。

这篇文章主要是对WordPress的插件有一个接触,WordPress很强大也很复杂,我会慢慢理清它并把我的经验总结分享出来,这次的Wordpresss插件自定义就先到这里。

去打赏

您的支持将鼓励我们继续创作!

[微信] 扫描二维码打赏

[支付宝] 扫描二维码打赏

正在跳转到PayPal...

发表评论