0

php 代码正在运行,并且正在显示联系表格和画廊,但是,youtube 视频链接并没有像在普通 Wordpress 页面中那样嵌入。它只是在弹出窗口中显示地址。这在页面上使用 html 代码时有效,但在 PHP 函数中一次不起作用。如果有人可以提供帮助,这是代码。谢谢。

function artistArea($atts, $content = null) {
   extract(shortcode_atts(array('number' => '#', 'photo' => '#', 'name' => '#', 'video' => '#', 'audio' => '#', 'gallery' => '#', 'bio' => '#', 'element1' => '#','element2' => '#','element3' => '#','element4' => '#'), $atts));  

    switch ($number) {
        case '1' :
            $element1 = '1';
            $element2 = '2';
            $element3 = '3';
            $element4 = '4';
            break;
        case '2' :
            $element1 = '5';
            $element2 = '6';
            $element3 = '7';
            $element4 = '8';
            break;
        case '3' :
            $element1 = '9';
            $element2 = '10';
            $element3 = '11';
            $element4 = '12';
            break;
        case '4' :
            $element1 = '13';
            $element2 = '14';
            $element3 = '15';
            $element4 = '16';
            break;
        case '5' :
            $element1 = '17';
            $element2 = '18';
            $element3 = '19';
            $element4 = '20';
            break;
        default :
            $element1 = '1';
            $element2 = '2';
            $element3 = '3';
            $element4 = '2';
            break;
        break;
    }

        switch ($type) {
        case 'lounge' :
            $formType = '[contact-form-7 id="4" title="Lounge Artists"]';
            break;
        case 'magic' :
            $formType = '[contact-form-7 id="184" title="Magic Artists"]';
            break;
        case 'tribute' :
            $formType = '[contact-form-7 id="185" title="Tribute Artists"]';
            break;
        case 'comedy' :
            $formType = '[contact-form-7 id="186" title="Comedy Artists"]';
            break;
        case 'dance' :
            $formType = '[contact-form-7 id="187" title="Dance Artists"]';
            break;
        case 'hen' :
            $formType = '[contact-form-7 id="188" title="Hens Party Artists"]';
            break;
        case 'hypnotist' :
            $formType = '[contact-form-7 id="189" title="Hypnotist Artists"]';
            break;
        case 'circus' :
            $formType = '[contact-form-7 id="190" title="Circus Artists"]';
            break;
        default :
            $formType = '[contact-form-7 id="4" title="Lounge Artists"]';
            break;
        break;
    }

        switch ($audio) {
        case '0' :
            $audioSection = ''; break;
        default :
            $audioSection = '
        <div class="artists_audio">
            <a class="lbp-inline-link-'.$element2.' cboxElement" href="#">AUDIO</a>
            <div style="display: none;"><div id="lbp-inline-href-'.$element2.'" style="padding:10px; background: #fff;">[soundcloud url="'.$audio.'" params="" width=" 100%" height="166" iframe="true" /]</div></div>
        </div>'; break;
        break;
    }

        switch ($video) {
        case '0' :
            $videoSection = ''; break;
        default :
            $videoSection = '       <div class="artists_video">
            <a class="lbp-inline-link-'.$element1.' cboxElement" href="#">VIDEO</a>
            <div style="display: none;"><div id="lbp-inline-href-'.$element1.'" style="padding:10px; background: #fff;">
            '.$video.'
            </div></div>
        </div>'; break;
        break;
    }

        switch ($gallery) {
        case '0' :
            $gallerySection = ''; break;
        default :
            $gallerySection = '                 <div class="artists_pictures">
            <a class="lbp-inline-link-'.$element3.' cboxElement" href="#">PICTURES</a>
            <div style="display: none;"><div id="lbp-inline-href-'.$element3.'" style="padding:10px; background: #fff;">[nggallery id='.$gallery.']</div></div>
        </div>'; break;
        break;
    }   


    $output = '<div class="artist_enclosure">
    <div class="artists_photo">
        <img src="'.$photo.'" alt="'.$name.'" width="150" height="150" class="alignnone size-thumbnail wp-image-39" />
    </div>
    <div class="artists_name"> 
        '.$name.'
    </div>
    <div class="artists_bio">
        '.$content.'
    </div>

    <div class="artists_media">

        '.$videoSection.'

        '.$audioSection.'

        '.$gallerySection.'

        <div class="artists_booknow">
            <a class="lbp-inline-link-'.$element4.' cboxElement" href="#">BOOK NOW!</a>
            <div style="display: none;"><div id="lbp-inline-href-'.$element4.'" style="padding:10px; background: #fff;">'.$formType.'</div></div>
        </div>
    </div>
</div>

        ';
return do_shortcode($output);
}
add_shortcode('artist', 'artistArea');
4

1 回答 1

0

do_shortcode不寻找 oEmbeds。您必须直接调用 oEmbed 代码,但在 oEmbed 代码查看您的内容之前,需要先完成一些设置。

而不是这个……</p>

return do_shortcode($output);

…你需要做这样的事情:

// Use the WP_Embed instance WordPress already set up
global $wp_embed;

/**
 * Replace the global $post with a fake ID (a really crazy one!)
 * or else WP_Embed::autoembed() will skip the oEmbed check
 * for some reason.
 **/
global $post;
$oldpost = $post;
$post = new stdClass();
$post->ID = PHP_INT_MAX;

// Process oEmbeds
$output = $wp_embed->autoembed( do_shortcode( $output ) );

// Restore the original $post
$post = $oldpost;

return $output;
于 2013-09-25T02:35:46.187 回答