因此,正如标题所述,我想扩展插件。 当有人通过“下载管理器”从站点下载时,该插件会将事件记录在数据库中(表:prefix_ahm_download_stats)。 对我来说,将事件记录在DB的另一个表中(表:prefix_table2)非常重要。 插件/download-manager/libs/class.DownloadStats.php文件负责这些操作。
<?php
/**
* Class DoawnloadStats
*/
namespace WPDM\libs;
use WPDM\Session;
class DownloadStats{
function __construct(){
}
function newStat($pid, $uid, $oid){
global $wpdb, $current_user;
//if(isset($_SESSION['downloaded_'.$pid])) return;
//if(isset($_COOKIE['downloaded_'.$pid])) return;
if(Session::get('downloaded_'.$pid)) return;
$ip = (get_option('__wpdm_noip') == 0)?$_SERVER['REMOTE_ADDR']:"";
$wpdb->insert("{$wpdb->prefix}ahm_download_stats",array('pid'=>(int)$pid, 'uid'=>(int)$uid,'oid'=>$oid, 'year'=> date("Y"), 'month'=> date("m"), 'day'=> date("d"), 'timestamp'=> time(),'ip'=>"$ip"));
update_post_meta($pid, '__wpdm_download_count',intval(get_post_meta($pid, '__wpdm_download_count', true))+1);
if($oid!='' && class_exists('\WPDMPP\Libs\Order')){
$order = new \WPDMPP\Libs\Order();
$order->Update(array('download'=>1), $oid);
}
$udl = maybe_unserialize(get_post_meta($pid, "__wpdmx_user_download_count", true));
if (is_user_logged_in()) {
$index = $current_user->ID;
}
else {
$index = str_replace(".", "_", $_SERVER['REMOTE_ADDR']);
}
$udl["{$index}"] = isset($udl["{$index}"])?(int)$udl["{$index}"]+1:1;
update_post_meta($pid, '__wpdmx_user_download_count', $udl);
//setcookie('downloaded_'.$pid, $ip, 1800);
if($ip == '') $ip = uniqid();
Session::set('downloaded_'.$pid, $ip);
}
}
问题不是我无法创建类似的函数将数据插入到另一个表中。问题是当我上传插件时,我必须重新编辑文件。我尝试自己编写一个自定义(外部)插件,但无法使其正常工作。我对钩子和动作没有太多的经验,所以我认为这是行不通的:p。谁能帮助我扩展插件,以便在更新插件时不会丢失代码? 附言我想在调用上面的代码时运行代码。