Intereting Posts

Невозможно обернуть мою голову вокруг этой функции – любая помощь будет оценена

ОК, поэтому я работаю над темой, в которой много используется утилита.

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

Поэтому я пошел искать решение и обнаружил, что у меня под носом все время. Я нашел то, что искал в файле custom-header.php моей темы. Я использовал Twenty Twelve, чтобы сделать эту тему, чтобы вы могли взглянуть. Я взял «двадцать twelve_header_style» и изменил его на следующее:

function wpforge_customize_css() { $header_container = esc_attr(get_theme_mod( 'header_container_background_color' )); if ( $header_container == get_theme_mod( 'header_container_background_color', '#e6e6e6' ) ) return; ?> <!--Customizer CSS--> <style type="text/css" id="wpforge-customizer-css"> .header_container{background-color:<?php echo $header_container; ?>;} </style> <!--/Customizer CSS--> 

Я был удивлен, когда это действительно сработало. Никакой customizer-css не показывался в заголовке, но когда я выбрал фоновый цвет в настройке, в заголовке отобразился правильный стиль css. Теперь, когда я вернул значение по умолчанию, css исчез из заголовка. Я подумал о себе УДИВИТЕЛЬНО !!!

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

 function wpforge_customize_css() { $header_container = esc_attr(get_theme_mod( 'header_container_background_color' )); if ( $header_container == get_theme_mod( 'header_container_background_color', '#e6e6e6' ) ) return; $header_wrap_width = esc_attr(get_theme_mod( 'header_width' )); if ( $header_wrap_width == get_theme_mod( 'header_width', '64rem' ) ) return; ?> <!--Customizer CSS--> <style type="text/css" id="wpforge-customizer-css"> .header_container{background-color:<?php echo $header_container; ?>;} .header_wrap{max-width:<?php echo $header_wrap_width; ?>;} </style> <!--/Customizer CSS--> 

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

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

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

 function wpforge_customize_css() { $header_container = esc_attr(get_theme_mod( 'header_container_background_color' )); if ( $header_container == get_theme_mod( 'header_container_background_color', '#e6e6e6' ) ) return; ?> <!--Customizer CSS--> <style type="text/css" id="wpforge-customizer-css"> .header_container{background-color:<?php echo $header_container; ?>;} </style> <!--/Customizer CSS--> 

и сделайте так:

 function wpforge_customize_css() { $header_container = esc_attr(get_theme_mod( 'header_container_background_color' )); if ( $header_container == get_theme_mod( 'header_container_background_color', '#e6e6e6' ) ) return; $header_wrap_width = esc_attr(get_theme_mod( 'header_width' )); if ( $header_wrap_width == get_theme_mod( 'header_width', '64rem' ) ) return; ?> <!--Customizer CSS--> <style type="text/css" id="wpforge-customizer-css"> .header_container{background-color:<?php echo $header_container; ?>;} .header_wrap{max-width:<?php echo $header_wrap_width; ?>;} </style> <!--/Customizer CSS--> 

и он работает без необходимости выбирать значение для header_container так, чтобы появился заголовок_wrapper

любая помощь очень ценится и благодарим вас заранее.

Ваша проблема в том, что вы ничего не возвращаете, если некоторые из параметров не соответствуют вашим критериям. Например, вы делаете это:

 if ( $header_container == get_theme_mod( 'header_container_background_color', '#e6e6e6' ) ) return; 

Итак, если $header_container равно #e6e6e6 , функция return и останавливает дальнейшее выполнение. Вы должны изменить эту логику. Например (просто быстрый пример):

 function wpforge_customize_css() { $output = ''; $header_container = esc_attr(get_theme_mod( 'header_container_background_color' )); if ( $header_container != get_theme_mod( 'header_container_background_color', '#e6e6e6' ) ) { $output = '.header_container{background-color: '.$header_container.'}'; } $header_wrap_width = esc_attr(get_theme_mod( 'header_width' )); if ( $header_wrap_width != get_theme_mod( 'header_width', '64rem' ) ) { $output = '.header_wrap{background-color: '.$header_wrap_width.'}'; } if( !empty($output) ) { ?> <!--Customizer CSS--> <style type="text/css" id="wpforge-customizer-css"> <?php echo $output; ?> </style> <!--/Customizer CSS--> <?php } } ?>