Строгие стандарты: только переменные должны передаваться по ссылке в wordpress/wp-includes/class-oembed.php в строке 116.

Я просмотрел множество подобных вопросов, и я не понимаю их в отношении моего кода.

Ошибка: 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 ) ) ) {

person bigmadwolf    schedule 04.08.2013    source источник
comment
Когда вы показываете код и даете нам номер строки, сделайте нам одолжение, отметив его в коде. Просто комментарий, говорящий // This is line 116 или что-то в этом роде.   -  person Sverri M. Olsen    schedule 04.08.2013
comment
Привет, Сверри - извините за путаницу - номер строки находится в включенном файле wordpress с именем class-oembed.php - но ошибка вызвана тем, что я делаю здесь специально для этой функции wp_oembed_get   -  person bigmadwolf    schedule 04.08.2013


Ответы (2)


Вы не должны использовать присваивания (=) внутри вашего троичного выражения, так как вы столкнетесь с проблемами с приоритетом операторов.

Вы можете написать это так:

$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>');
person jeroen    schedule 04.08.2013
comment
отличный совет - спасибо, как вы думаете, что вызывает ошибку, или это просто общий совет по работе с тернарными операторами? - person bigmadwolf; 04.08.2013
comment
@pushplaybang Это вполне может вызвать вашу ошибку, но что такое строка 116? - person jeroen; 04.08.2013
comment
это строка 116 в wordpress включает class-oembed.php. функция wp_oembed_get(), которую я использую, чтобы увидеть, может ли WordPress встроить ссылку, ссылается на что-то там - я посмотрел, не имеет для меня смысла, также ошибка не сохраняется, если я удалю эти несколько строк - person bigmadwolf; 04.08.2013
comment
@pushplaybang У вас все еще есть ошибка с измененным кодом, который я опубликовал? - person jeroen; 04.08.2013

в настоящее время я вообще избегаю использования wp_oembed_get, меняя местами мои условные выражения и, если это не iframe, или используя следующее, которое, кажется, автоматически определяет, является ли это ссылкой на локальном размещении или oembed автоматически....

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

а затем повторить $post_embed

person bigmadwolf    schedule 04.08.2013