如何从wp选项值显示视频?

时间:2015-03-06 作者:Danish

我在管理部分的分类页面上工作,提供额外的字段。并遵循此代码。以下是代码链接:-https://en.bainternet.info/wordpress-category-extra-fields/

我正在使用上述链接类别图像中的两个字段和我添加的youtube url中的额外字段。

我想使用此代码在我的页面中显示视频,但不想在页面中获取视频或任何值。这是我的代码:-

<?php 
//first get the current category ID
$cat_id = get_query_var(\'cat\');
//then i get the data from the database
$cat_data = get_option("category_$cat_id");

if (isset($cat_data[\'extra1\'])){
//echo \'<div class="category_image"><img src="\'.$cat_meta[\'extra1\'].\'"></div>\';
echo do_shortcode(\'[videojs youtube="\'.$cat_meta[\'extra1\'].\'" width="699" height="269" preload="auto" loop="true" autoplay="false" controls="false" class="responsive-video"]\');
}
?>
请告诉我任何解决方案。

1 个回复
SO网友:Tom J Nowell

您的代码:

$cat_data = get_option("category_$cat_id");

if ( isset($cat_data[\'extra1\'] ) ){
    echo do_shortcode(\'[videojs youtube="\'.$cat_meta[\'extra1\'].\'" width="699" height="269" preload="auto" loop="true" autoplay="false" controls="false" class="responsive-video"]\');
}
这里有很多事情你没有做,或者可以做得更好:

如果get_option 找不到任何内容并返回值false 您的代码可能会出现致命错误并崩溃videojs 但您可以使用WordPress附带的oembed功能删除此依赖关系。你知道吗,如果你把youtube的URL单独放在一行内容中,它会自动神奇地转换成视频播放器您从不检查URL是否确实是URL,例如,如果URL是:"]<script>alert(\'hacked\');</script>[sldfjknv attr=", 这可能会导致前端上运行的不安全javascript无法替换,如果不存在所述插件或短代码,则功能将失败,且不会出现回退,它不考虑空值或空格字符串,“不是有效的youtube URL,但它是有效的字符串,并且将生成无效的短代码,如果$cat_id 替换为一个非数字的变量,这可能会产生意外的后果,并且是sql注入的可能途径。记住这一点,让我们重构:

$data = get_option( \'category_\'.$cat_id );

// does the object exist?
if ( $data !== false ) {
    // empty checks if the value is set, and also checks if it has something in it, not just spaces
    if ( !empty( $data[\'extra1\'] ) ) {
        $url = $data[\'extra1\'];

        // URLs are URLs, lets escape this URL so that nothing nasty is passed along
        $url = esc_url( $url );

        // grab the embed html using oembed ( it has a second argument to specify width and height but it should be unnecessary )
        $embed = wp_oembed_get( $url );
        // set up a fallback
        if ( $embed != false ) {
            $embed = \'<a href="\'.$url.\'">\'.$url.\'</a>\';
        }
        echo $embed;
    }
}
新版本检查值是否为所需的值,转义值,并使用经过良好测试的WordPress核心API,而不是第三方。响应性应该由主题/插件CSS负责。如果由于任何原因嵌入失败,它也会返回到超链接。

结束

相关推荐

Show all sub categories?

是否可以显示所有父猫的所有子/子类别?我有以下层次结构:父类别/税--子1--子2父类别/税2--子1--子2我想能够在一个模板上显示所有子类别,而不显示父类别。这可能吗?