2015-10-20 3 views
0

Мой PHP-код ниже работает отлично на месте, но как только я помещаю это на живой сервер, он берет весь сайт. После того, как журналы ошибок расследование, он имеет проблемы с [], используемый в этой строке кода:Ошибка PHP functions.php 500 error []

wp_enqueue_script('jquery', '//fake-jquery-script.js', [], null); 

Вот PHP в полной мере, как я получаю вокруг этого вопроса?

/** 
* @desc De-register WP jquery 
**/ 
add_action('wp_print_scripts', 'de_script', 100); 

function de_script() { 
    wp_dequeue_script('jquery'); 
    wp_deregister_script('jquery'); 

} 

/** 
    * Inject jQuery early if there's a Gravity Form 
    */ 
function gc_gform_inject_jquery($content = '') { 
    global $gc_jquery_loaded_before_gform; 

    if (!isset($gc_jquery_loaded_before_gform)) { 

     // set global variable so jQuery isn't loaded twice 
     $gc_jquery_loaded_before_gform = true; 

     // inject jQuery code 
     echo '<!-- loading jquery before Gravity Form inline scripts -->'; 
     gc_load_jquery_cdn_and_fallback(); 
    } 
    return $content; 
} 
add_filter('gform_cdata_open', 'gc_gform_inject_jquery'); 

/** 
    * Load jQuery in the footer or before the first Gravity Form. 
    * Include a local fallback if the Google CDN fails (e.g. User is in China) 
    */ 
    function gc_load_jquery_cdn_and_fallback() { 
    // Google CDN 
    echo '<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery'. (SCRIPT_DEBUG ? '.js' : '.min.js') .'"></script>'; 
    // Local fallback 
    echo '<script>if (!window.jQuery) { document.write(\'<script src="'. get_stylesheet_directory_uri() .'/js/vendor/jquery-1.11.2'. (SCRIPT_DEBUG ? '.js' : '.min.js') .'"><\/script>\'); }</script>'; 
    } 

/** 
    * Loading jQuery and jQuery-dependent scripts 
    * If jQuery was not already loaded before a Gravity Form, load it 
    * Also enqueue a fake version of it (for dependencies) and then 
    * remove this fake script 
    */ 
function gc_load_javascript_in_footer() { 
    global $gc_jquery_loaded_before_gform; 

    // If jQuery has not been loaded already, load it 
    if ($gc_jquery_loaded_before_gform !== true) { 
     gc_load_jquery_cdn_and_fallback(); 
    } 

    // Enqueue a fake script called "jquery" to for dependent enqueued scripts 
    // HERE'S THE PROBLEM 
    wp_enqueue_script('jquery', '//fake-jquery-script.js', [], null); 

    // Remove the fake script 
    function gc_remove_fake_jquery_script($tag) { 
     $tag = (strpos($tag, 'fake-jquery-script') !== false) ? '' : $tag; 
     return $tag; 
    } 
    add_filter('script_loader_tag', 'gc_remove_fake_jquery_script'); 
} 
add_action('wp_footer', 'gc_load_javascript_in_footer'); 
+0

старая версия PHP, что вы работаете не поддерживает короткий синтаксис массива; вместо этого используйте 'array()' или обновите версию PHP, на которой вы работаете –

+0

'[]' могут сами по себе никогда не отправляться функции. Если это строка, оберните ее в кавычки, если это массив, оберните ее в переменную. но поскольку они, они никогда не будут проанализированы вашим текущим PHP. EDIT: может быть, PHP 7 может? – Martin

+0

@Martin - PHP> = 5.4.0, поэтому он был частью PHP с 1 марта 2012 года –

ответ

2

[] - короткая рука PHP для пустого массива. http://php.net/manual/en/language.types.array.php

Но для этого вам требуется PHP 5.4+.

Если он работает локально, но не удаленно, скорее всего, ваш удаленный сервер < PHP 5.4

+0

, поэтому, если я использую' 'вместо [], он будет работать нормально? – egr103

+0

№ Ссылка на [документация] (https://codex.wordpress.org/Function_Reference/wp_enqueue_script), чтобы увидеть приемлемые аргументы. В этом случае по умолчанию используется массив(). Null _should_ будет в порядке, поскольку параметр отмечен как необязательный. Но это действительно зависит от того, как функция обрабатывает настройки по умолчанию, и я не совсем уверен в этом случае. Безопасные деньги говорят со значением по умолчанию, когда вы сомневаетесь. @ erg103 – Practically

-1
Please call javascript with thid code 
wp_enqueue_script('jquery', '//fake-jquery-script.js', array('jquery'), '2015-10-26'); 
and Please download fake-jquery-script.js .and put on the projects js template folder and call javascript in 
wp_enqueue_script('jquery', '//fake-jquery-script.js', array('jquery'), '2015-10-26');