插件修改更改功能仅适用于登录用户

时间:2017-03-07 作者:Brad Votava

我需要稍微修改帧视频播放器插件。https://wordpress.org/plugins/frames-video-gallery/

我希望它显示的播放列表仅针对当前登录的用户。

我认为实现这一点的最简单方法是更改以下文件中的SQL查询:frames-video-gallery/engine/api.php

以下是当前写入文件的函数:

function getPlaylists(){
                $fields = $this->getFields(\'playlist\');
                $lists = $this->db->query( \'SELECT oid,\'. $fields[\'cols\'] .\' FROM \'.$this->table->playlists,  $fields);
        return $lists;
    }
因此,目前它正在为所有用户返回所有播放列表。

以下是我尝试的修改:

function getPlaylists(){
                $current_user = wp_get_current_user();
                $fields = $this->getFields(\'playlist\');
                $lists = $this->db->query( \'SELECT oid,\'. $fields[\'cols\'] .\' FROM \'.$this->table->playlists,  $fields WHERE wp_users.ID=\'$current_user->ID\');
        return $lists;
    }
尽管我的SQL语法出现了PHP错误。我不熟悉作者在SQL查询中使用的串联。有什么建议吗?我是不是遗漏了几句话?

谢谢

1 个回复
SO网友:scott

是的,我认为你的报价后哪里是倒退。可以这样尝试:

...$fields.\' WHERE wp_users.ID=\'.$current_user->ID );

“WHERE wp\\u users.ID=”部分是纯文本,用于作为查询的一部分,因此需要加引号。$current\\u user->ID是一个变量,应该位于引号之外。

如果这不起作用,我建议使用一个变量来存储SQL查询,然后将其作为调试输出。这样你就可以看到正在形成的东西,看看它是否是你所期望的。

我就是这样做的:

$sql = db->prepare( "SELECT * FROM $table WHERE user=%s", $current_user->ID );

希望这有帮助!

顺便说一句,我花了一段时间才习惯使用句点作为串联运算符。

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请