Как добавить javascript вставлять в wordpress [дубликат]

Самый простой способ добиться этого - поместить метод input в цикл while. Используйте continue , когда вы получаете плохой ввод, и break выходят из цикла, когда вы удовлетворены.

Когда ваш вход может привести к исключению

Попробуйте попытаться и поймать , чтобы определить, когда пользователь вводит данные, которые не могут быть проанализированы.

while True:
    try:
        # Note: Python 2.x users should use raw_input, the equivalent of 3.x's input
        age = int(input("Please enter your age: "))
    except ValueError:
        print("Sorry, I didn't understand that.")
        #better try again... Return to the start of the loop
        continue
    else:
        #age was successfully parsed!
        #we're ready to exit the loop.
        break
if age >= 18: 
    print("You are able to vote in the United States!")
else:
    print("You are not able to vote in the United States.")

Реализация собственных правил проверки

Если вы хотите отклонить значения, которые Python может успешно проанализировать, вы можете добавить свою собственную логику проверки.

while True:
    data = input("Please enter a loud message (must be all caps): ")
    if not data.isupper():
        print("Sorry, your response was not loud enough.")
        continue
    else:
        #we're happy with the value given.
        #we're ready to exit the loop.
        break

while True:
    data = input("Pick an answer from A to D:")
    if data.lower() not in ('a', 'b', 'c', 'd'):
        print("Not an appropriate choice.")
    else:
        break

Объединение обработки исключений и пользовательской проверки

Оба вышеуказанных метода могут быть объединены в один цикл.

while True:
    try:
        age = int(input("Please enter your age: "))
    except ValueError:
        print("Sorry, I didn't understand that.")
        continue

    if age < 0:
        print("Sorry, your response must not be negative.")
        continue
    else:
        #age was successfully parsed, and we're happy with its value.
        #we're ready to exit the loop.
        break
if age >= 18: 
    print("You are able to vote in the United States!")
else:
    print("You are not able to vote in the United States.")

Инкапсулирование его в функции

Если вам нужно спросить у вашего пользователя множество разных значений, может быть полезно поместить этот код в функция, поэтому вам не нужно повторно указывать ее каждый раз.

def get_non_negative_int(prompt):
    while True:
        try:
            value = int(input(prompt))
        except ValueError:
            print("Sorry, I didn't understand that.")
            continue

        if value < 0:
            print("Sorry, your response must not be negative.")
            continue
        else:
            break
    return value

age = get_non_negative_int("Please enter your age: ")
kids = get_non_negative_int("Please enter the number of children you have: ")
salary = get_non_negative_int("Please enter your yearly earnings, in dollars: ")

Вводя все вместе

Вы можете расширить эту идею, чтобы создать очень общую функцию ввода:

def sanitised_input(prompt, type_=None, min_=None, max_=None, range_=None):
    if min_ is not None and max_ is not None and max_ < min_:
        raise ValueError("min_ must be less than or equal to max_.")
    while True:
        ui = input(prompt)
        if type_ is not None:
            try:
                ui = type_(ui)
            except ValueError:
                print("Input type must be {0}.".format(type_.__name__))
                continue
        if max_ is not None and ui > max_:
            print("Input must be less than or equal to {0}.".format(max_))
        elif min_ is not None and ui < min_:
            print("Input must be greater than or equal to {0}.".format(min_))
        elif range_ is not None and ui not in range_:
            if isinstance(range_, range):
                template = "Input must be between {0.start} and {0.stop}."
                print(template.format(range_))
            else:
                template = "Input must be {0}."
                if len(range_) == 1:
                    print(template.format(*range_))
                else:
                    print(template.format(" or ".join((", ".join(map(str,
                                                                     range_[:-1])),
                                                       str(range_[-1])))))
        else:
            return ui

С использованием, например:

age = sanitised_input("Enter your age: ", int, 1, 101)
answer = sanitised_input("Enter your answer: ", str.lower, range_=('a', 'b', 'c', 'd'))

Общие ошибки, и почему вы должны избегать их

Резервное использование красного undant input Заявления

Этот метод работает, но обычно считается неудовлетворительным:

data = input("Please enter a loud message (must be all caps): ")
while not data.isupper():
    print("Sorry, your response was not loud enough.")
    data = input("Please enter a loud message (must be all caps): ")

Первоначально он может выглядеть привлекательно, потому что он короче, чем метод while True, но он нарушает Не повторяйте сам принцип разработки программного обеспечения. Это увеличивает вероятность ошибок в вашей системе. Что делать, если вы хотите выполнить резервное копирование до 2.7, изменив input на raw_input, но случайно измените только первый input выше?

Рекурсия будет бить ваш стек

Если вы только что узнали о рекурсии, возможно, у вас возникнет соблазн использовать ее в get_non_negative_int, поэтому вы можете избавиться от цикла while.

def get_non_negative_int(prompt):
    try:
        value = int(input(prompt))
    except ValueError:
        print("Sorry, I didn't understand that.")
        return get_non_negative_int(prompt)

    if value < 0:
        print("Sorry, your response must not be negative.")
        return get_non_negative_int(prompt)
    else:
        return value

Кажется, что он работает отлично в большинстве случаев, но если пользователь вводит неверные данные достаточно времени, сценарий заканчивается с помощью RuntimeError: maximum recursion depth exceeded. Вы можете подумать, что «ни один дурак не допустит 1000 ошибок подряд», но вы недооцениваете изобретательность дураков!

104
задан brasofilo 13 March 2014 в 18:48
поделиться

14 ответов

Я знаю, что вы имеете в виду в учебниках. Вот как я это делаю:

Сначала вам нужно написать свой скрипт. В папке темы создайте папку под названием «js». Создайте файл в этой папке для вашего javascript. Например. ваш-script.js. Добавьте скрипт jQuery в этот файл (вам не нужны теги <script> в файле .js).

Вот пример того, как ваш сценарий jQuery (в wp-content / themes / your- theme / js / your-scrript.js) может выглядеть:

jQuery(document).ready(function($) {
  $('#nav a').last().addClass('last');
})

Обратите внимание, что я использую jQuery, а не $ в начале функции.

Хорошо, теперь откройте файл functions.php темы. Вы захотите использовать функцию wp_enqueue_script(), чтобы добавить свой скрипт, а также сообщить WordPress, что он использует jQuery. Вот как это сделать:

add_action( 'wp_enqueue_scripts', 'add_my_script' );
function add_my_script() {
    wp_enqueue_script(
        'your-script', // name your script so that you can attach other scripts and de-register, etc.
        get_template_directory_uri() . '/js/your-script.js', // this is the location of your script file
        array('jquery') // this array lists the scripts upon which your script depends
    );
}

Предполагая, что ваша тема имеет wp_head и wp_footer в правильных местах, это должно сработать. Дайте мне знать, если вам нужна дополнительная помощь.

Вопросы WordPress можно задать в WordPress Answers .

159
ответ дан Community 20 August 2018 в 23:10
поделиться
  • 1
    Мне пришлось добавить add_action ('wp_enqueue_scripts', 'add_my_script'); чтобы загрузить это, но это все еще самый ясный ответ. – Ele Munjeli 28 March 2013 в 00:15
  • 2
    в каком файле вы его добавили? @EleMunjeli – Francisco Corrales Morales 23 January 2014 в 22:17
  • 3
    в functions.php – Ele Munjeli 14 February 2014 в 09:47
  • 4
    Спасибо, Ele Munjeli, за подсказку add_action. ТАКЖЕ: если вы работаете с дочерней темой, вместо этого используйте get_stylesheet_directory_uri. – Screenack 12 October 2014 в 20:34
  • 5
    Спасибо чувак. вы сохраняете мой день, когда вы отрезали, отлично работает для меня – The EasyLearn Academy 29 October 2014 в 13:57

Ответ отсюда: https://premium.wpmudev.org/blog/adding-jquery-scripts-wordpress/

Несмотря на то, что WordPress был вокруг какое-то время, а метод добавления скриптов к темам и плагинам был одним и тем же годами, все еще есть некоторая путаница в том, как именно вы должны добавлять скрипты. Итак, давайте выясним это.

Поскольку jQuery по-прежнему является наиболее часто используемой структурой Javascript, давайте посмотрим, как вы можете добавить простой сценарий к своей теме или плагину.

jQuery's Режим совместимости

Прежде чем мы начнем прикреплять скрипты к WordPress, давайте посмотрим на режим совместимости jQuery. WordPress поставляется с пакетом jQuery, который вы должны использовать с вашим кодом. Когда загружается jQuery WordPress, он использует режим совместимости, который является механизмом для предотвращения конфликтов с другими языковыми библиотеками.

Что это сводится к тому, что вы не можете использовать знак доллара напрямую, как вы бы в других проектах. При написании jQuery для WordPress вам нужно использовать jQuery. Взгляните на код ниже, чтобы увидеть, что я имею в виду:

1
ответ дан brasofilo 20 August 2018 в 23:10
поделиться

Если вы используете wordpress дочернюю тему для добавления скриптов в вашу тему, вы должны изменить функцию get_template_directory_uri на get_stylesheet_directory_uri, например:

Родительская тема:

add_action( 'wp_enqueue_scripts', 'add_my_script' );
function add_my_script() {
    wp_register_script(
        'parent-theme-script', 
        get_template_directory_uri() . '/js/your-script.js', 
        array('jquery') 
    );

    wp_enqueue_script('parent-theme-script');
}

Child Theme:

add_action( 'wp_enqueue_scripts', 'add_my_script' );
function add_my_script() {
    wp_register_script(
       'child-theme-script', 
       get_stylesheet_directory_uri() . '/js/your-script.js', 
       array('jquery') 
    );

    wp_enqueue_script('child-theme-script');
}

get_template_directory_uri: / your-site / wp-content / themes / parent-theme

get_stylesheet_directory_uri: / your-site / wp- содержание / темы / дети тема

5
ответ дан DibaCode 20 August 2018 в 23:10
поделиться

Вам нужно только загрузить jquery?

1) Как и другие руководства, зарегистрируйте свой скрипт в файле functions.php следующим образом:

// register scripts
if (!is_admin()) {
    // here is an example of loading a custom script in a /scripts/ folder in your theme:
    wp_register_script('sandbox.common', get_bloginfo('template_url').'/scripts/common.js', array('jquery'), '1.0', true);
    // enqueue these scripts everywhere
    wp_enqueue_script('jquery');
    wp_enqueue_script('sandbox.common');
}

2) Обратите внимание, что нам не нужно регистрировать jQuery, потому что он уже находится в ядре. Убедитесь, что wp_footer () вызывается в вашем footer.php, а wp_head () вызывается в вашем header.php (здесь он выдает тег скрипта), а jQuery будет загружаться на каждую страницу. Когда вы вставляете jQuery в WordPress, он будет в режиме «без конфликтов», поэтому вам нужно использовать jQuery вместо $. Вы можете отменить регистрацию jQuery, если хотите, и перерегистрировать свой собственный, выполнив wp_deregister_script ('jquery').

0
ответ дан Eli Cole 20 August 2018 в 23:10
поделиться
  • 1
    Нет, я понял, что эта часть. Загрузка jquery проста. Мне нужно знать, какой файл добавить код jquery и как. – Citizen 26 June 2012 в 19:19
  • 2
    Поместите wp_enqueue_script ('имя скрипта'); перед get_header () шаблона, который вы хотите, чтобы этот скрипт помещался в очередь. – Eli Cole 20 July 2012 в 20:38

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

wp_enqueue_script( 'script', plugins_url('js/demo_script.js', __FILE__), array('jquery'));

Посмотрите сообщение , которое поможет вам понять, насколько легко вы можете реализовать jQuery и CSS в плагине WordPress.

1
ответ дан frlan 20 August 2018 в 23:10
поделиться

Вы можете добавить jQuery или javascript в файл function.php темы. Код выглядит следующим образом:

add_action( 'wp_enqueue_scripts', 'add_my_script' );

function add_my_script() {
wp_enqueue_script(
    'your_script_name', // your script unique name 
    get_template_directory_uri().'/js/your-script.js', //script file location
    array('jquery') //lists the scripts upon which your script depends
);
}

Для получения более подробной информации посетите этот учебник: http://www.codecanal.com/add-simple-jquery-script-wordpress/

4
ответ дан Jitendra Damor 20 August 2018 в 23:10
поделиться

Помимо ввода скрипта через функции, вы можете «просто» включить ссылку (тег rel rel), которая находится в заголовке, нижний колонтитул, в любой шаблон, где бы он ни был. Вам просто нужно убедиться, что путь правильный. Я предлагаю использовать что-то вроде этого (предполагая, что вы находитесь в директории своей темы).

<script type="javascript" href="<?php echo get_template_directory_uri();?>/your-file.js"></script>

Хорошей практикой является включение этого права перед тегом закрывающего тела или, по крайней мере, непосредственно перед вашим нижним колонтитулом. Вы также можете использовать php include или несколько других способов потянуть этот файл.

<script type="javascript"><?php include('your-file.js');?></script>
3
ответ дан josh.chavanne 20 August 2018 в 23:10
поделиться

вы можете написать свой скрипт в другом файле. И запишите свой файл, как это, предположим, ваше имя сценария image-ticker.js.

wp_enqueue_script( 'image-ticker-1', plugins_url('/js/image-ticker.js', __FILE__), array('jquery', 'image-ticker'), '1.0.0', true ); 

вместо /js/image-ticker.js вы должны поместить свой файл js путь.

1
ответ дан k4ppa 20 August 2018 в 23:10
поделиться

Помимо помещения скрипта через функции, вы можете «просто» включить ссылку (тег ссылки rel, которая есть) в заголовок, нижний колонтитул в любом шаблоне, где бы то ни было.

Нет. Вы никогда не должны просто добавлять ссылку на внешний скрипт, подобный этому в WordPress. Запуск их через файл functions.php гарантирует, что скрипты будут загружены в правильном порядке.

В противном случае ваш скрипт может не работать, хотя он написан правильно.

1
ответ дан Kenneth Odle 20 August 2018 в 23:10
поделиться

** # Метод 1: ** Попробуйте поместить ваш код jquery в отдельный файл js.

Теперь зарегистрируйте этот скрипт в файле functions.php.

function add_my_script() {
    wp_enqueue_script(
      'custom-script', get_template_directory_uri() . '/js/your-script-name.js', 
        array('jquery') 
    );
}
add_action( 'wp_enqueue_scripts', 'add_my_script' );

Теперь вы закончили.

Регистрация скрипта в функциях имеет преимущество, поскольку он входит в раздел <head>, когда загружается страница, поэтому он всегда является частью header.php. Поэтому вам не нужно повторять свой код каждый раз, когда вы пишете новый html-контент.

#Method 2: поместите код скрипта внутри тела страницы в тег <script>. Тогда вам не нужно регистрировать его в функциях.

1
ответ дан Rajan471 20 August 2018 в 23:10
поделиться

Здесь есть много учебников и ответов о том, как добавить ваш скрипт для включения в страницу. Но я не мог найти, как структурировать этот код, чтобы он работал правильно. Это связано с тем, что $ не используется в этой форме JQuery.

Итак, вот мой код, и вы можете использовать его как шаблон.

jQuery(document).ready(function( $ ){
  $("#btnCalculate").click(function () {
        var val1 = $(".visits").val();
        var val2 = $(".collection").val();
        var val3 = $(".percent").val();
        var val4 = $(".expired").val();
        var val5 = $(".payer").val();
        var val6 = $(".deductible").val(); 
        var result = val1 * (val3 / 100) * 10 * 0.25;
        var result2 = val1 * val2 * (val4 / 100) * 0.2;
        var result3 = val1 * val2 * (val5 / 100) * 0.2;
        var result4 = val1 * val2 * (val6 / 100) * 0.1;
        var val7 = $(".pverify").val();
        var result5 = result + result2 + result3 + result4 - val7;
        var result6 = result5 * 12;
        $("#result").val("$" + result);
        $("#result2").val("$" + result2);
        $("#result3").val("$" + result3);
        $("#result4").val("$" + result4);
        $("#result5").val("$" + result5);
        $("#result6").val("$" + result6);
  });
});
3
ответ дан Rob 20 August 2018 в 23:10
поделиться

Вы можете добавить пользовательский javascript или jquery с помощью этого плагина. https://wordpress.org/plugins/custom-javascript-editor/

Когда вы используете jQuery, не забудьте использовать режим jquery noconflict

3
ответ дан sameeuor 20 August 2018 в 23:10
поделиться

После долгих поисков я наконец нашел что-то, что работает с последним WordPress. Ниже приведены следующие шаги:

  1. Найдите каталог своей темы, создайте папку в каталоге для своих пользовательских js (custom_js в этом примере).
  2. Поместите свой пользовательский jQuery в файле .js в этом каталоге (jquery_test.js в этом примере).
  3. Убедитесь, что ваш пользовательский jQuery .js выглядит следующим образом:
    (function($) {
    $(document).ready(function() {
    $('.your-class').addClass('do-my-bidding');
    })
    })(jQuery);
    
  4. Перейти в каталог темы , открыть функции functions.php
  5. Добавить код рядом с вершиной, который выглядит так:
    //this goes in functions.php near the top
    function my_scripts_method() {
    // register your script location, dependencies and version
       wp_register_script('custom_script',
       get_template_directory_uri() . '/custom_js/jquery_test.js',
       array('jquery'),
       '1.0' );
     // enqueue the script
      wp_enqueue_script('custom_script');
      }
    add_action('wp_enqueue_scripts', 'my_scripts_method');
    
  6. Проверьте свой сайт, чтобы убедиться, что он работает!
41
ответ дан Stan 20 August 2018 в 23:10
поделиться
  • 1
    Спасибо, это мне очень помогло! Для тех, кто работает с дочерней темой, используйте get_stylesheet_directory_uri () вместо get_template_directory_uri () – David Taiaroa 17 March 2014 в 18:35
  • 2
    Спасибо за это пошаговое объяснение, Стэн! (и примечание об использовании этого с дочерними темами, @DavidTaiaroa) – marky 2 June 2015 в 13:48

«У нас есть Google» cit. Для правильного использования скрипта внутри wordpress просто добавьте размещенные библиотеки. Как Google

После того, как выбранная библиотека вам понадобится связать ее перед вашим пользовательским скриптом: exmpl

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

и после вашего собственного скрипта

<script type="text/javascript">
$(document).ready(function(){
    $('.text_container').addClass("hidden");</script>
1
ответ дан Vlad 20 August 2018 в 23:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: