2

关于我的代码,我已经查看了很多类似的问题,但我没有得到它。

错误 : Strict Standards: Only variables should be passed by reference in wordpress/wp-includes/class-oembed.php on line 116

这是我的代码....

// Get Ready Display the Audio
$embedCheck     = array("<embed", "<ifram");// only checking against the first 6
$mykey_values   = get_post_custom_values('_format_audio_embed');
$content_oembed = '';

// check if the audio metabox is used
if ( isset($mykey_values) && !empty($mykey_values) ) {
    // iterate over values passed
    foreach ( $mykey_values as $key => $value ) {
         $url = $value;
         $wtf = wp_oembed_get($url);
         if ( !empty($url) ) {
            $firstCar = substr($url, 0, 6); // get the first 6 char.

            // if its a http(s).
            if ( strpos($firstCar, "http:/" ) !== false || strpos($firstCar, "https:" ) !== false ) {
                // send it to wp_oembed to see if the link is oembed enabled.


                    $content_oembed = ($wtf !==false)
                  ? ('"<div class="audio" style="width:100%; overflow:hidden;">' .$wtf.'</div>')
                  : ('<audio src="'.$url.'" preload="none" type="audio/mpeg"></audio>');
            }

            // if its the embed code that matches our array defined above.
            else if ( audio_strpos_arr($firstCar, $embedCheck ) !== false ) {
                $content_oembed = '<div class="video" style="width:100%; overflow:hidden;">' .$url. '</div>';

            }
        }
    }; // end foreach
} // end conditional

如果我删除评论下方条件中的部分“将其发送到 wp_oembed 以查看链接是否已启用 oembed。”,但如果我将 soundcloud 链接传递给它,仍然会更奇怪 - 没有错误,但如果它是本地托管的文件,它会去乳头。

任何帮助将不胜感激。

经过一番摆弄-似乎问题与此功能有关http://codex.wordpress.org/Function_Reference/wp_oembed_get

以及在包含的 class-oembed.php 中引用的内容在第 116 行表示以下内容

112         function discover( $url ) {
113                 $providers = array();
114 
115                 // Fetch URL content
116                 if ( $html = wp_remote_retrieve_body( wp_safe_remote_get( $url ) ) ) {
4

2 回答 2

0

您不应该=在三元表达式中使用赋值 (),因为您会遇到运算符优先级的问题。

你可以这样写:

$content_oembed = (wp_oembed_get($url) !==false)
                  ? ('<div class="audio" style="width:100%; overflow:hidden;">' . wp_oembed_get($url).'</div>')
                  : ('<audio src="'.$url.'" preload="none" type="audio/mpeg"></audio>');
于 2013-08-04T08:47:26.540 回答
0

暂时我通过交换我的条件来完全避免使用 wp_oembed_get ,如果它不是 iframe 或使用以下似乎可以确定它是本地托管的,还是自动嵌入的链接......

global $wp_embed;
$post_embed = $wp_embed->run_shortcode('[embed]'.$url.'[/embed]');

然后回显 $post_embed

于 2013-08-04T12:06:19.283 回答