Поддержка Проблемы и решения jQuery-плагин не работает. Кажется)

  • Решено carbonady

    (@carbonady)


    Друзяки, отсыпьте халявы. Полюбил jQuery-плагин, но в Вордпрессе взаимность не настаёт, не работает плагин. Настаёт только там, где WP нет. А раз я не программист, то мне бы готовенького решения. Я уж начитался о проблемах найти универсальное подключение jQuery-скриптов в WP и поэкспериментировал.

    Речь о плагине jSlabify, заполняющем глифами всю поляну их блока. Тут примеры и описание его работы — http://shigaev.com/pages/jslabify/. Показываю потому, что может быть дело в нём самом. Во всех этих разницах между «$», «$j», в которых я как раз не того, но меня ими уже пугали.

    Как подключал к WP. И так, и эдак. Так — это вот так:

    function my_scripts_method() {
    // register your script location, dependencies and version
       wp_register_script('jquery.jSlabify',
       get_template_directory_uri() . '/js/jquery.jSlabify.js',
       array('jquery'),
       '2.5' );
     // enqueue the script
      wp_enqueue_script('jquery.jSlabify');
      }
    add_action('wp_enqueue_scripts', 'my_scripts_method');

    Либо тупо втыканием в ту часть functions.php, где регистрируются все скрипты:

    function youkie_scripts() {
    ...
      wp_enqueue_script('newscript', get_template_directory_uri() . 
      '/js/jquery.jSlabify.js');
    ...
    }

    А эдак, это — напрямую, в футер:
    <script src="js/jquery.jSlabify.js"></script>

    Даже добавлял перед ним:
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>

    Открывал все скрипты по ссылкам, видел код. Но результатов самой обработки не было. А вот на том сайте, где у меня не WP, а бирмановская Эгея (там, куда я дал ссылку на пример использования), всё пашет. Я даже кидал плагин в корень хоста — вне папок тем, — но всё то же самое: на сервере с WP не пашет, на другом всё ок.

    Остальные скрипты — как обычные javascript, так и WP-плагины с jQuery — работают. Работает даже WP-вариант jSlabify. Только он пока ещё не реализует всю массу функционала, его пока нельзя использовать.

    Ужас как жаль. Расставания не перенесу, вижу ему массу применений на WP. Куда сувать?

    • Тема изменена 6 лет назад пользователем carbonady.
Просмотр 8 ответов — с 1 по 8 (всего 8)
  • jQuery в wordpress работает в «безопасном» режиме.
    то есть к скриптам надо обращаться через jQuery., а не $..
    либо использовать конструкции аля:

    
    <script type="text/javascript">
    jQuery(document).ready(function($) {
    
    })
    </script>
    
    Автор carbonady

    (@carbonady)

    Это куда девать? Можно полностью, исходя из расписанных условий?

    я вопрос не понимаю.
    вы подключили свой jquery-плагин.
    а где вы запускаете его функции?
    вот там и надо это использовать.

    Автор carbonady

    (@carbonady)

    А. Ну это же вот тут, в коде, глянуть можно:

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    
    <script src="js/jquery.jSlabify.js"></script>
    
    <script>
      // Function to jSlabify the H1 headings
       function slabifyHeadlines() {
       $("h1").jSlabify({
       // Don't slabtext the headers if the viewport is under 380px
        viewportBreakpoint : 380,
        targetFont : true,
        fontZoom : 2.5,
        minWordSpace : 1.3,
        maxWordSpace : 1,
        maxLetterSpace : 1
       });
      };
        
        // Called one second after the onload event for the demo (as I'm hacking the
        // fontface load event a bit here)
    
        // Please do not do this in a production environment - you should really use
        // google WebFont loader events (or something similar) for better control
      $(window).load(function() {
       // So, to recap... don't actually do this, it's nasty!
       setTimeout(slabifyHeadlines, 500);
      });
    </script>

    Это вариант, понятное дело, не из Вордпресса. И он работает. А как сделать, чтобы в WP заработало тоже?

    Мне ещё рассказывали, что «$» надо заменять на «$j». Но в скрипте масса вхождений этого символа и я не уверен в том, что замене подлежит каждый. В общем, караул.

    • Ответ изменён 6 лет назад пользователем carbonady.
    • Ответ изменён 6 лет назад пользователем carbonady.
    Модератор Yuri

    (@yube)

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>

    Не нужно лишний раз подключать jQuery прямо в скрипте. Если Тема или плагины еще не подключили, то правильнее это сделать в functions.php темы.

    <script src="js/jquery.jSlabify.js"></script>

    Так вообще нельзя делать, потому что браузер не найдет относительную директорию js.

    Мне ещё рассказывали, что «$» надо заменять на «$j».

    Вздор. Менять $ на jQuery

    Матчасть https://developer.wordpress.org/themes/basics/including-css-javascript/

    Автор carbonady

    (@carbonady)

    Друзяки, я всё понимаю в плане подключить. И браузер прекрасно находит скрипты. Но в чём же проблема? В самом скрипте? В «$»? Ок. Но, как я упомянул, в нём масса вхождений этого «$». Разве заменять на jQuery нужно каждый из них? Был бы я программер…

    Вот например, такая конструкция:

    ...
            return this.each(function(){
                if(options)
                    $.extend(settings, options);
                
                var $this               = $(this),
                    keepSpans           = $("span.slabbedtext", $this).length,
    ...

    Как здесь быть с $this? Тоже менять на jQuerythis? Ну и так далее.
    Может у кого-нибудь получится расписать для меня всю последовательность?

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Но, как я упомянул, в нём масса вхождений этого «$». Разве заменять на jQuery нужно каждый из них?

    Сам скрипт трогать не нужно, только вызовы его функций. Можно добавить строку var $ = jQuery; в самом начале:

    
    <script>
    	var $ = jQuery;
    	...
    	$('h1').jSlabify({
    		...
    	});
    	...
    </script>
    

    Или воспользоваться конструкцией, которую предложил Flector:

    
    <script>
    jQuery(document).ready(function($) {
    	...
    	$('h1').jSlabify({
    		...
    	});
    	...
    });
    </script>
    
    Автор carbonady

    (@carbonady)

    А, вот это куда девать! Заработало, пошёл процесс. Видите — сколько у меня друзяк-объясняк? Спасибо!

    • Ответ изменён 6 лет назад пользователем carbonady.
Просмотр 8 ответов — с 1 по 8 (всего 8)
  • Тема «jQuery-плагин не работает. Кажется)» закрыта для новых ответов.