Поддержка Проблемы и решения Отладчик вордпресс показал ошибку

  • Решено pro100ta

    (@pro100ta)


    Здравствуйте!

    Отладчик WordPress показал такую ошибку

    Notice: Функция register_nav_menus вызвана неправильно. Расположения в меню навигации должны быть строками. Дополнительную информацию можно найти на странице «Отладка в WordPress». (Это сообщение было добавлено в версии 5.3.0.) in /home/kreditpl/public_html/wp-includes/functions.php on line 5313

    Как решить эту проблему?

    Вот код с файла /wp-includes/functions.php

    if ( WP_DEBUG && apply_filters( 'doing_it_wrong_trigger_error', true, $function, $message, $version ) ) {
    		if ( function_exists( '__' ) ) {
    			if ( $version ) {
    				/* translators: %s: Version number. */
    				$version = sprintf( __( '(This message was added in version %s.)' ), $version );
    			}
    
    			$message .= ' ' . sprintf(
    				/* translators: %s: Documentation URL. */
    				__( 'Please see <a href="%s">Debugging in WordPress</a> for more information.' ),
    				__( 'https://wordpress.org/support/article/debugging-in-wordpress/' )
    			);
    
    			trigger_error(
    				sprintf(
    					/* translators: Developer debugging message. 1: PHP function name, 2: Explanatory message, 3: WordPress version number. */
    					__( '%1$s was called <strong>incorrectly</strong>. %2$s %3$s' ),
    					$function,
    					$message,
    					$version
    				),
    				<strong>E_USER_NOTICE</strong>
    			);
    		} else {
    			if ( $version ) {
    				$version = sprintf( '(This message was added in version %s.)', $version );
    			}
    
    			$message .= sprintf(
    				' Please see <a href="%s">Debugging in WordPress</a> for more information.',
    				'https://wordpress.org/support/article/debugging-in-wordpress/'
    			);
    
    			trigger_error(
    				sprintf(
    					'%1$s was called <strong>incorrectly</strong>. %2$s %3$s',
    					$function,
    					$message,
    					$version
    				),
    				E_USER_NOTICE
    			);
    		}
    	}
    }

    Строку 5313 выделил жирным

    Страница, с которой нужна помощь: [войдите, чтобы увидеть ссылку]

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Автор pro100ta

    (@pro100ta)

    Визуально строка не выделилась. Смотрите где теги

    Модератор Юрий

    (@yube)

    Вот код с файла /wp-includes/functions.php

    Зачем? Этот файл есть у всех, у кого есть вордпресс.

    Нужно смотреть, где и как вызывается функция register_nav_menus(). Скорее всего, это где-то в Теме, похоже самодельной.

    Автор pro100ta

    (@pro100ta)

    Вот где эта функция в теме

    <?
    	//включаем меню
    	register_nav_menus(array (
        '404'    => 'меню страницы 404',
    		'under_top'    => 'Самое верхнее меню',    //Название месторасположения меню в шаблоне
    		'top'    => 'Верхнее меню',    //Название месторасположения меню в шаблоне
    		'bottom' => 'Нижнее меню'      //Название другого месторасположения меню в шаблоне
    	) );
    
    	//включаем превью для записей
    	add_theme_support( 'post-thumbnails' ); // для всех типов постов
    
    	//отключаем стили contact form
    	function deregister_cf7_styles(){
    		if ( !is_page( array(1,2,5) ) ){
    			wp_deregister_style('contact-form-7');
    		}
    	}
    	add_action('wp_print_styles', 'deregister_cf7_styles', 100);
    
    	/* disable jquery and emoji */
    	function my_jquery_remove() {
    		if (!is_admin()) {
    		wp_deregister_script('jquery');
    		wp_register_script('jquery', false);
    		}
    	}
    	add_action('init', 'my_jquery_remove'); 
    	// function disable_wp_emojicons() {
    	// // all actions related to emojis
    	// remove_action( 'admin_print_styles', 'print_emoji_styles' );
    	// remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
    	// remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
    	// remove_action( 'wp_print_styles', 'print_emoji_styles' );
    	// remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
    	// remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
    	// remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
    
    	// // filter to remove TinyMCE emojis
    	// add_filter( 'tiny_mce_plugins', 'disable_emojicons_tinymce' );
    	// }
    	// add_action( 'init', 'disable_wp_emojicons' );
    
    	add_action( 'wp_footer', 'mycustom_wp_footer' );
     
    	function mycustom_wp_footer() {
    	?>
    	<script>
    	document.addEventListener( 'wpcf7mailsent', function( event ) {
    		$('#open-success').click();
    	}, false );
    	</script>
    	<?php
    	}
    
    	add_filter( 'wpcf7_autop_or_not', '__return_false' );
    Модератор Юрий

    (@yube)

    Матчасть:https://developer.wordpress.org/reference/functions/register_nav_menus/

    Судя по всему, php интерпретировала '404' как число, а не как строку (автопреобразование типов оно такое), поэтому сработало условие

    if ( is_int( $key ) ) {
                _doing_it_wrong( __FUNCTION__, __( 'Nav menu locations must be strings.' ), '5.3.0' );
                break;
            }
    

    Стоит изменить location эотй менюхи на что-то с буквами. И соответсвенно там, где это меню выводится (возможно, шаблон 404.php) тоже.

    Автор pro100ta

    (@pro100ta)

    Спасибо. Сделал как Вы сказали и ошибка ушла.

    • Ответ изменён 2 дня, 3 часа назад пользователем pro100ta.
Просмотр 5 ответов — с 1 по 5 (всего 5)