如何验证发布元类型/扩展名(视频文件、图像文件等)

时间:2017-07-29 作者:The WP Intermediate

我试图通过一个已经存在的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的特定元。

2 个回复
最合适的回答,由SO网友:Johansson 整理而成

Post的元数据不能也不应用于验证。它们很容易被操纵。Post元数据只存储“可编辑的”字符串或数组,仅此而已。

您复制的代码正在尝试获取元数据并检查其值是否为mp3. 您可以更改的值exemp3, 它将假定文件是mp3。所以,这里的安全问题。

要真正验证文件,必须将文件路径或URL传递给真正的验证器。

例如,WordPress提供以下功能来验证图像:

file_is_valid_image( $path );
返回true的是过程中的文件是真实图像。有一个函数可以检索文件的真正扩展名(因为它很容易被操作,可以将.exe更改为.jpg),您可以通过简单的搜索找到它们。

SO网友:Jacob Peattie

上面的函数是在后端呈现标记的函数?

对的

似乎正在验证文件是否为mp3?

否。它只是检查meta的值是否被设置为文本“无效文件类型”。无论您从何处获得此信息,都将在save操作中进行验证,如果文件类型无效,则会将meta的值设置为\'invalid-file-type\'.

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在