私はコーディングの初心者自作です。2012 年以降、 wordpressでうまく機能する複雑なテーマがあります。私は頻繁にjqmigrateを使用して、変更が必要なものや非推奨のものを変更および修正します。常に変更するものにうんざりしているので、ワードプレスを更新して、そのテーマを今から適応させました。
私はその新しい警告を持っています:
jQuery.parseJSON には有効な JSON 文字列が必要です
その正確な行について:
hooks = jQuery.parseJSON(hooks);
コードのこの部分で:
/**
* SMOF js
*
* contains the core functionalities to be used
* inside SMOF
*/
jQuery.noConflict();
/** Fire up jQuery - let's dance!
*/
jQuery(document).ready(function($){
jQuery("select.seo-select").children().removeAttr('selected');
jQuery("select.seo-select").change(function(){
$input = jQuery(this).parent().prev();
$text = jQuery(this).val();
if($input.val() != ''){
$text = ' | '+jQuery(this).val();
}
$input.val($input.val()+$text);
jQuery(this).children().removeAttr('selected');
});
//(un)fold options in a checkbox-group
jQuery('.fld').change(function() {
var $fold='.f_'+this.id;
$($fold).slideToggle('normal', "swing");
});
//delays until AjaxUpload is finished loading
//fixes bug in Safari and Mac Chrome
if (typeof AjaxUpload != 'function') {
return ++counter < 6 && window.setTimeout(init, counter * 500);
}
//hides warning if js is enabled
$('#js-warning').hide();
//Tabify Options
$('.group').hide();
// Display last current tab
if ($.cookie("of_current_opt") === null) {
$('.theme_options .group:first').fadeIn('fast');
$('.theme_options #of-nav li:first').addClass('current');
} else {
var hooks = $('#hooks').html();
hooks = jQuery.parseJSON(hooks);
if(hooks) {
$.each(hooks, function(key, value) {
if ($.cookie("of_current_opt") == '#of-option-'+ value) {
$('.theme_options .group#of-option-' + value).fadeIn();
$('.theme_options #of-nav li.' + value).addClass('current');
}
});
}
}
他の投稿でその問題に対する回答が見つかりませんでした。関連すると思われるものを除いて。https://stackoverflow.com/a/24512828/8844128でアドバイスされているように、これを一番上に追加しようとしましたが、何も変わりませんでした:
var json = $.parseJSON(jsonString || "null");
多分それは別の問題です。誰にも説明があり、さらに有効な解決策がありますか?
- jquery-migrate.js?ver=1.4.1:45
- jquery.js?ver=1.12.4:2
- ワードプレス: 4.9.4
- site :個人用サイト
コメントで尋ねられたように、背景画像のポップアップをトリガーすると、テーマの管理オプション インターフェイス ページで使用されます。hook
159行目 に表示される管理コードは次のとおりです。
jQuery.noConflict();
jQuery(document).ready(function($){
//hide hidden section on page load.
jQuery('#section-body_bg, #section-body_bg_custom, #section-body_bg_properties').hide();
//delays until AjaxUpload is finished loading
//fixes bug in Safari and Mac Chrome
if (typeof AjaxUpload != 'function') {
return ++counter < 6 && window.setTimeout(init, counter * 500);
}
//hides warning if js is enabled
$('#js-warning').hide();
//Tabify Options
$('.group').hide();
// Display last current tab
if ($.cookie("of_current_opt") === null) {
$('.group:first').fadeIn();
$('#of-nav li:first').addClass('current');
} else {
var hooks = <?php
$hooks = of_get_header_classes_array();
echo json_encode($hooks);
?>;
$.each(hooks, function(key, value) {
if ($.cookie("of_current_opt") == '#of-option-'+ value) {
$('.group#of-option-' + value).fadeIn();
$('#of-nav li.' + value).addClass('current');
}
});
}
そして1190行目:
$header_class = ereg_replace("[^A-Za-z0-9]", "", strtolower($value['name']));
$jquery_click_hook = ereg_replace("[^A-Za-z0-9]", "", strtolower($value['name']));
$jquery_click_hook = "of-option-" . $jquery_click_hook;
$menu .= '<li class="' . $header_class . '"><a title="' . $value['name'] . '" href="#' . $jquery_click_hook . '">' . $value['name'] . '</a></li>';
$output .= '<div class="group" id="' . $jquery_click_hook . '"><h2>' . $value['name'] . '</h2>' . "\n";
break;
すべてがどのように接続されているかを確認するのに役立つ場合、 phpファイルをインラインで送信する方法はありますか?