出于某种原因,今天的PHP正在努力在WordPress中设置一些过滤器,问题是如何在两个函数(过滤器)之间传递变量?
我希望利用WordPress钩子upload_dir
和pre-upload-ui
来提供一种将项目直接上传到所选文件夹的方法,但仍要利用内置的上传器。
下面的第一个功能为上传者设置了上传目录,并与_PLAY
这样的预定义值一起使用时,会将文件上传到服务器上的所需目录-很好:)
if (!function_exists ('lf_media_uploader_dir')) {
function lf_media_uploader_dir ($upload) {
$lf_up_dir = '/_PLAY';
// I am trying to get the value of the selected directory
// from the function lf_upload_prefilter, as this is a means
// of hooking into the top of the media uploader.
$lf_up_dir = apply_filters ('lf-upload-filter');
$upload['subdir'] = $lf_up_dir;
$upload['path'] = $upload['basedir'] . $lf_up_dir;
$upload['url'] = $upload['baseurl'] . $lf_up_dir;
return $upload;
}
}
add_filter ('upload_dir', 'lf_media_uploader_dir', 99);
现在要绑定到上载器页面,我已经抓住了钩子pre-upload-ui
。在下面的函数中,它正确显示了“ pre”消息,因此我知道它已被调用。但是无论我尝试了什么(包括全局变量),我都无法将值从该函数传递回lf_media_uploader_dir
。
这是第二个功能,当前在“媒体上载器”窗格上显示消息后,当前设置一个静态值。
if (!function_exists ('lf_upload_prefilter')) {
function lf_upload_prefilter ($lf_dir_select) {
echo '<pre>Filter Fired pre-upload-ui</pre>';
//Set a dummy value, later provide a selector box.
$lf_dir_select = '/_PLAY';
}
}
add_filter('pre-upload-ui','lf_upload_prefilter',99);
答案 0 :(得分:0)
为此,您需要使用Class并使用其properties来访问方法(函数)之间的公用值。
由于所有内容都封装在该类中,因此不需要所有这些 <script>
$(document).ready(function () {
$('#datepicker').datepicker({
uiLibrary: 'bootstrap4'
});
//load current date into datapicker
var now = new Date();
var day = ("0" + now.getDate()).slice(-2);
var month = ("0" + (now.getMonth() + 1)).slice(-2);
var today = month + '/' + day + '/' + now.getFullYear();
//alert(today);
$('#datepicker').val(today);
//$("#RideDate").val(now.getFullYear() + "-" + month + "-" + day); // not needed
$("#fixtime").click(function () {
var fix = $("#datepicker").val(); // from datepicker mm/dd/yyyy to ASP yyyy-mm-dd
var fix2 = fix.substr(6) + "-" + fix.substr(0, 2) + "-" + fix.substr(3, 2);
$("#RideDate").val(fix2);
//alert("ride date = " + $("#RideDate").val());
});
});
</script>
或函数名称的自定义前缀。
这里有一个小的概念证明,需要适应您的需求。 if function_exists()
可用时,您的所有过滤器都会触发。
plugins_loaded