我试图通过一个已经存在的meta的例子来学习Wordpress中的meta→
function cpmb_display_meta_box( $post ) {
// Define the nonce for security purposes
wp_nonce_field( plugin_basename( __FILE__ ), \'cpmb-nonce-field\' );
// Start the HTML string so that all other strings can be concatenated
$html = \'\';
// If the current post has an invalid file type associated with it,
// then display an error message.
if ( \'invalid-file-type\' == get_post_meta( $post->ID, \'mp3\', true ) ) {
$html .= \'<div id="invalid-file-type" class="error">\';
$html .= \'<p>You are trying to upload a file other than an MP3.</p>\';
$html .= \'</div>\';
}
// Display the \'Title of MP3\' label and its text input element
$html .= \'<label id="mp3-title" for="mp3-title">\';
$html .= \'Title Of MP3\';
$html .= \'</label>\';
$html .= \'<input type="text" id="mp3-title" name="mp3-title" value="\' . get_post_meta( $post->ID, \'mp3-title\', true ) . \'" placeholder="Your Song By Elton John" />\';
// Display the \'MP3 File\' label and its file input element
$html .= \'<label id="mp3-file" for="mp3-file">\';
$html .= \'MP3 File\';
$html .= \'</label>\';
$html .= \'<input type="file" id="mp3-file" name="mp3-file" value="" />\';
echo $html;
}
上面的函数是在后端呈现标记的函数?
我的问题与这一行有关→
if ( \'invalid-file-type\' == get_post_meta( $post->ID, \'mp3\', true ) ) {
似乎正在验证文件是否为mp3?
The Main Question → 如果我们想验证这是否是视频文件,该怎么办?视频文件可以有多种类型,可以来自许多来源,如Vimeo、Youtube、facebook等。
此外,
我请求这篇文章的读者引导我找到一些已经成功使用oembed的特定元。
最合适的回答,由SO网友:Johansson 整理而成
Post的元数据不能也不应用于验证。它们很容易被操纵。Post元数据只存储“可编辑的”字符串或数组,仅此而已。
您复制的代码正在尝试获取元数据并检查其值是否为mp3
. 您可以更改的值exe
到mp3
, 它将假定文件是mp3。所以,这里的安全问题。
要真正验证文件,必须将文件路径或URL传递给真正的验证器。
例如,WordPress提供以下功能来验证图像:
file_is_valid_image( $path );
返回true的是过程中的文件是真实图像。有一个函数可以检索文件的真正扩展名(因为它很容易被操作,可以将.exe更改为.jpg),您可以通过简单的搜索找到它们。