добавление <script> к wordpress в элементе <head>

40

Я пытаюсь вставить этот код:

 <script type="text/javascript">
    some Javascript codes comes here
</script>

в Wordpress '<head></head> в передней части и в панели администратора

Например, Joomla! 1.6 имеет API, который позволяет это:

        $doc =& JFactory::getDocument();
        $doc->addCustomTag($headTag);

Мне нужно добавить разные вещи для разных страниц. Например:

Page 1 Мне нужно добавить

<link rel="alternate" type="application/rss+xml" title="feed title" href="feed url" />

На несколько страниц

Page 2 Мне нужно добавить

<script type=\"text/javascript\" src=\"" . LIVE_SITE .
 "/wp-content/plugins/jobs/lknlibrary/js/ajax.js\"></script>
    <script type=\"text/javascript\">

    var ajax = new sack();
    var currentClientID=false;
    function getClientData()
    {
        var clientId = document.getElementById('db_country_id').value.replace(/[^0-9]/g,'');
        ajax.requestFile = '" .BASE_PATH . "/wp-content/plugins/jobs/com_jobs_admin/tasks/get_location_data.php?task=get_location_data&name=db_parent_id&getClientId='+clientId;    // Specifying which file to get
        ajax.onCompletion = showClientData; // Specify function that will be executed after file has been found
        ajax.runAJAX();        // Execute AJAX function
    }

    function showClientData()
    {
        clearJS = ajax.response;
        var strTagStrippedText = clearJS.replace(/(<\s*\/?\s*)div(\s*([^>]*)?\s*>)/gi ,'');
        document.getElementById('locationsDiv').innerHTML=strTagStrippedText ;
    }

    function initFormEvents()
    {
        if (document.getElementById('db_country_id')){
            document.getElementById('db_country_id').onchange = getClientData;
            document.getElementById('db_country_id').focus();
        }
    }

    window.onload = initFormEvents;
</script>

для нескольких страниц

Page 3 Мне нужно добавить

 <link rel="stylesheet" type="text/css" href="/tab.webfx.css" />

для нескольких страниц

У меня есть 70 + страниц в панели администратора, как показано выше.

Попытка управлять заголовком WordPress с помощью примера немного сложна.

  • 2
    один - чистый HTML, а другой - фреймворк PHP ... оба они приводят к одинаковому выводу HTML. уточните свой вопрос, пожалуйста.
  • 0
    почему бы просто не вставить свой код в header.php?
Показать ещё 3 комментария
Теги:
plugins

6 ответов

117

В вашей теме functions.php:

function my_custom_js() {
    echo '<script type="text/javascript" src="/myscript.js"></script>';
}
// Add hook for admin <head></head>
add_action( 'admin_head', 'my_custom_js' );
// Add hook for front-end <head></head>
add_action( 'wp_head', 'my_custom_js' );
  • 0
    я редактировал оригинальный вопрос
  • 0
    Хороший ответ. Простое утверждение if / else решило бы остальные требования OP, то есть проверку конкретных страниц, типов страниц и тому подобного.
9

Боюсь, что для тех, кто приходит сюда, смотрит с @usama sulaiman.

Использование функции enqueue обеспечивает безопасный способ загрузки таблиц стилей и сценариев в соответствии с зависимостями сценариев и является рекомендуемым Wordpress методом достижения того, чего пытался достичь оригинальный плакат. Подумайте только о тех плагинах, которые пытаются загрузить свою собственную копию jQuery, например; тебе лучше надеяться, что они используют enqueue: D.

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

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

Что-то из следующего в файле плагина - это то, что вы ищете:

<?php
/*
Plugin Name: Your plugin name
Description: Your description
Version: 1.0
Author: Your name
Author URI: 
Plugin URI: 
*/

function $yourJS() {
    wp_enqueue_script(
        'custom_script',
        plugins_url( '/js/your-script.js', __FILE__ ),
        array( 'jquery' )
    );
}
 add_action( 'wp_enqueue_scripts',  '$yourJS' );
 add_action( 'wp_enqueue_scripts', 'prefix_add_my_stylesheet' );

 function prefix_add_my_stylesheet() {
    wp_register_style( 'prefix-style', plugins_url( '/css/your-stylesheet.css', __FILE__ ) );
    wp_enqueue_style( 'prefix-style' );
  }

?>

Структурируйте свои папки следующим образом:

Plugin Folder
  |_ css folder
  |_ js folder
  |_ plugin.php ...contains the above code - modified of course ;D

Затем заархивируйте его и загрузите в свою установку Wordpress, используя интерфейс добавления плагинов, активируйте его и Боба, вашего дядю.

5

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

В файле functions.php добавьте

$inject_required_scripts = array();

/**
 * Call this function before calling get_header() to request custom js code to be injected on head.
 *
 * @param code the javascript code to be injected.
 */
function require_script($code) {
  global $inject_required_scripts;
  $inject_required_scripts[] = $code; // store code snippet for later injection
}

function inject_required_scripts() {
  global $inject_required_scripts;
  foreach($inject_required_scripts as $script)
    // inject all code snippets, if any
    echo '<script type="text/javascript">'.$script.'</script>';
}
add_action('wp_head', 'inject_required_scripts');

И затем на вашей странице или шаблоне используйте его как

<?php
/* Template Name: coolstuff */

require_script(<<<JS
  jQuery(function(){jQuery('div').wrap('<blink/>')});
JS
);

require_script(<<<JS
  jQuery(function(){jQuery('p,span,a').html('Internet is cool')});
JS
);

get_header();
[...]

Я сделал это для javascript, потому что это наиболее распространенное использование, но его можно легко адаптировать к любому тегу в голове и либо со встроенным кодом, либо путем передачи href/src во внешний URL.

  • 0
    Интересно, так ли это на WordPress? Любой энтузиаст wp хочет прокомментировать?
  • 0
    Смотрите также johnmackay61 ответ ниже. Я не знал о wp_enqueue_script во время написания. По сути, мое решение, вероятно, все еще применимо к небольшим фрагментам, но для большего кода лучше разместить его в отдельном js-файле и запросить его через функцию wp_enqueue_script.
2

Если вы используете внешний плагин для этого, вы можете использовать плагин заголовка и нижнего колонтитула плагин

Из описания:

Многие темы WordPress не имеют возможности вставлять заголовки и сценарии нижнего колонтитула на вашем сайте или. Это помогает вам себя от темы блокировки. Но иногда это также вызывает некоторую боль для многие. например, куда я должен вставлять код Google Analytics (или любой другой коды веб-аналитики). Этот плагин представляет собой одностоечное и легкое решение для этого. С этим плагином "Верхний и нижний колонтитулы Script" вы сможете добавлять HTML-теги, коды JS и CSS и легко.

  • 1
    Это был бы самый простой способ управлять этой частью добавления скриптов в нижний колонтитул или заголовок. В будущем вы можете забыть, как на самом деле вы добавили свой код, но с этим легче запомнить.
2

Я считаю, что codex.wordpress.org - ваша лучшая ссылка для решения этой задачи очень хорошо зависит от ваших потребностей.

проверьте эти две страницы в Wordpress Codex:

wp_enqueue_script

wp_enqueue_style

0

Хороший пост! Вы также можете попробовать этот плагин для управления сценариями Java https://theluckywp.com/product/scripts-control/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню