Jplayer и wordpress 3.6.x

Я встраиваю свой код Jplayer в свой веб-сайт, однако в установке WordPress уже есть jquery, но когда я копирую свой код через проигрыватель, он не работает, поскольку он не показывает значок громкости с x над ним. Когда я включаю внешний скрипт jquery, он ломает входной сайт, но плеер работает. Есть ли лучший способ включить jPlayer в мой сайт WordPress?


person Kern Elliott    schedule 15.10.2013    source источник
comment
Я не могу, к сожалению, код до сих пор скрыт владельцами сайта. Но его базовый код и плеер работают сразу не в wordpress а в том числе и во внешнем файле jquery.   -  person Kern Elliott    schedule 15.10.2013
comment
Посмотрите в консоли ошибок JavaScript, что именно ломается при использовании существующего jQuery   -  person Pekka    schedule 15.10.2013


Ответы (1)


Сценарий jPlayer, поставленный в очередь, должен воспроизводиться по правилам WordPress. Самый простой (и, возможно, единственный) способ — использовать Шорткод. Многие разработчики, в основном разработчики тем, игнорируют тот факт, что мы не удаляем из очереди связанную версию jQuery< /a> и загрузить любую версию с какого-нибудь CDN (по крайней мере, мы не делаем этого, не зная точно, что делаем).

Вот грубый тест, функцию обратного вызова шорткода нужно сильно отшлифовать.

public function plugin_setup() // hooked into plugins_loaded 
{
    add_action( 'wp_enqueue_scripts', array( $this, 'enqueue' ) );
    add_shortcode( 'jplayer', array( $this, 'shortcode' ) );
}

public function enqueue()
{
    wp_register_script(
        'sj-jplayer', 
        $this->plugin_url . 'js/jquery.jplayer.min.js', 
        array( 'jquery' ), // <------- Dependencies
        false,
        true
    );
    wp_register_style( 'sj-skin', $this->plugin_url . 'skin/blue.monday/jplayer.blue.monday.css' );

    wp_enqueue_script( 'sj-jplayer' );
    wp_enqueue_style( 'sj-skin' );
}

public function shortcode( $atts, $content )
{
    ob_start();
    require_once('html-shortcode.php');
    $var = ob_get_clean();
    return $var;
}

Файл html-shortcode в основном представляет собой код этой демонстрации, адаптированный следующим образом:

<?php
/*
 * Prints the shortcode
 */
?>
<script type="text/javascript">
    jQuery(document).ready(function($) // <------ WP noConflict 
    {
        $("#jquery_jplayer_1").jPlayer({});
    });
</script>

<div id="jquery_jplayer_1" class="jp-jplayer"></div>

Я проверил этот шорткод jPlayer внутри другого, который выполняет jScrollPane, и он работал на iPad.

person brasofilo    schedule 15.10.2013
comment
На самом деле я поместил плеер в iframe. Это не чисто, но это сработало - person Kern Elliott; 18.10.2013