Как добавить все параметры фона с деревом параметров в тему WordPress?

Я относительно новичок в разработке темы WordPress, и мне пришлось создать тему с деревом опций. Я успешно добавил некоторые параметры с помощью плагина дерева параметров в мою тему WordPress. Но я действительно стою, когда добавляю параметр «Фон». У меня есть полный раздел настроек темы с параметром «тип» => «фон», после того, как я вижу, что нашел некоторые параметры в параметрах темы информационных панелей, такие как «выбрать цвет», «фоновое повторение», «фоновое вложение», 'background-position' и размер фона. Теперь я хочу запросить все методы, но я не знаю, как это сделать. именно я хочу сделать этот код динамическим тело {фон: URL-адрес (из файла дерева опций прикрепить) опция повтора дерева опций прокрутки опции положение дерева опции размер фона дерева опции цвет дерева}

это точно css body{background:url(img/body_bg.png) no-repeat scroll 0 0 # ddd}. Любой Пожалуйста, помогите мне.


person Foysal imran    schedule 20.01.2014    source источник
comment
Старайтесь следовать правилам форматирования всего, что вы публикуете в stackoverflow.   -  person Neeku    schedule 21.01.2014
comment
@WpMania.Net, можете ли вы ответить на следующий вопрос? stackoverflow.com/questions/25219208/   -  person ArtyTheme    schedule 10.08.2014


Ответы (4)


Вы можете попробовать что-то вроде этого....

<?php $bg_body = ot_get_option( 'bg_body', array() ); ?> 
body
{ 
background-color: <?php if($bg_body['background-color']){echo $bg_body['background-color'] ; }else{ echo '#ffffff';} ?>;
background-repeat:<?php if($bg_body['background-repeat']){echo $bg_body['background-repeat'] ; }else{ echo 'repeat-x';} ?>;
background-attachment:<?php if($bg_body['background-attachment']){echo $bg_body['background-attachment'] ; }else{ echo 'fixed';} ?>;
background-position:<?php if($bg_body['background-position']){echo $bg_body['background-position'] ; }else{ echo 'top';} ?>;
background-image:url(<?php if($bg_body['background-image']){echo $bg_body['background-image'] ; }else{ echo get_template_directory_uri().'/images/bg.png';} ?>) ;
}

Я лично использую это для своих премиальных тем. www.wpmania.net

person WpMania.Net    schedule 11.02.2014
comment
Пробовали ли вы добавлять собственные фоны к записям/страницам через post_meta с помощью option-tree-metaboxes? - person Jeton R.; 12.02.2014
comment
Если вы посмотрите мой пример выше, вы поймете, что я добавляю стиль для HTML-элемента body. что бы это ни было, вы можете это сделать :) - person WpMania.Net; 03.03.2014
comment
Да, я часто использовал вариант фона метабокса для своих премиальных тем. Есть небольшой трюк для получения мета-значений из поля для дерева опций..... Я не могу добавлять сюда коды, поэтому я собираюсь добавить коды в область ответов для вас... - person WpMania.Net; 14.03.2014

так что сначала вы должны создать вариант для фона.....

то вы можете показать опцию, используя следующий код....

тело { цвет фона: ; фон-повторить:; фоновое вложение:; фоновая позиция:; фоновое изображение: URL () ; }

На самом деле, когда вы создаете фоновый вариант, он генерирует массив, и вам нужно иметь все данные отдельно. Я также преобразовал приведенный выше код в функцию PHP. Пожалуйста, проверьте и его.....

// A function that will create css for background options  
function WpmBgColor( $wpm_options, $wpm_class, $identifier){ 
    $wpm_options = ot_get_option( $wpm_options, array() );  
    if($wpm_options['background-color'] | $wpm_options['background-repeat'] | $wpm_options['background-attachment'] | $wpm_options['background-position'] | $wpm_options['background-image'] ){ echo 
        $identifier.$wpm_class . "{ 
        background-color: ".$wpm_options['background-color']."; 
        background-repeat:".$wpm_options['background-repeat']."; 
        background-attachment:".$wpm_options['background-attachment']."; 
        background-position:".$wpm_options['background-position']."; 
        background-image:url(".$wpm_options['background-image'].") ; 
        background-size:".$wpm_options['background-size']."; 
        } ";   
    } 
} 

Эта функция имеет несколько аргументов...

$wpm_options: это будет идентификатор вашего поля дерева опций. $wpm_class: имя вашего селектора css, для которого вы добавляете css. $identifier: идентификатор вашего селектора css, будь то класс или идентификатор. Просто поставьте #, если это идентификатор, и поставьте «.», если это класс. И оставьте это поле пустым, если это HTML-тег. Как и для тела, вы можете оставить его пустым.

Напишите мне, если вам нужно больше разъяснений. Спасибо, Саббир.

person WpMania.Net    schedule 03.03.2014

Люди спрашивают меня, как использовать фоновую опцию для бетабокса ( OptionTree Metabox ).....

Прежде всего, вы должны написать следующие коды в цикле, иначе это может не сработать......

<?php
$MyBg= get_post_meta($post->ID, 'option_tree_meta_value', false);
$MyBg = $MyBg['0'];
?>

<style type="text/css">
<!-- 
.css_selector
{ 
background-color: <?php if($MyBg['background-color']){echo $MyBg['background-color'] ; }else{ echo '#ffffff';} ?>;
background-repeat:<?php if($MyBg['background-repeat']){echo $MyBg['background-repeat'] ; }else{ echo 'repeat-x';} ?>;
background-attachment:<?php if($MyBg['background-attachment']){echo $MyBg['background-attachment'] ; }else{ echo 'fixed';} ?>;
background-position:<?php if($MyBg['background-position']){echo $MyBg['background-position'] ; }else{ echo 'top';} ?>;
background-image:url(<?php if($MyBg['background-image']){echo $MyBg['background-image'] ; }else{ echo get_template_directory_uri().'/images/bg.png';} ?>) ;
}
-->
</style>

Если вам все еще нужна дополнительная помощь, просто напишите мне. Я должен вернуться к вам, когда у меня будет немного времени.

person WpMania.Net    schedule 14.03.2014
comment
Поскольку у меня нет достаточной репутации, поэтому я не могу комментировать заданные мне выше вопросы.... Итак, пожалуйста.... Привет. Прежде всего, я не уверен, как вы добавили wp_add_inline_style.. кажется ваш код почти правильный. Но вам необходимо следовать этому руководству здесь codex.wordpress.org/Function_Reference/wp_add_inline_style. - person WpMania.Net; 31.03.2014

@wpmania.net

В настоящее время я использую функцию встроенного стиля wordpress, чтобы добавить css для сообщений и страниц после загрузки моей основной таблицы стилей. Использование метабоксов из дерева опций ofc.

    // Inline style for post/page backgrounds
if ( is_single() || is_page() ) {
    $background = get_post_meta( get_the_ID(), 'my_post_background_metabox', true );
    if ( !empty( $background ) ) {
        $background_color       = ( $background['background-color'] != '' ) ? $background['background-color'] . ' ' : '';
        $background_image       = ( $background['background-image'] != '' ) ? 'url('.$background['background-image'].') ' : '';
        $background_repeat      = ( $background['background-repeat'] != '' ) ? $background['background-repeat']. ' ' : '';
        $background_positon     = ( $background['background-position'] != '' ) ? $background['background-position']. ' ' : '';
        $background_attachment  = ( $background['background-attachment'] != '' ) ? $background['background-attachment']. ' ' : '';
        $background_size        = ( $background['background-size'] != '' ) ? 'background-size: '. $background['background-size']. ';' : '';
        $custom_post_background = 
            '/* Custom Background for ' . get_the_title() . ' */' . "\n" .
            '.css_selector { background: '.$background_color.$background_image.$background_repeat.$background_attachment.$background_positon.';'."\n". $background_size .'}';
        wp_add_inline_style( 'my_theme_style', $custom_post_background );
    }
}

РЕДАКТИРОВАТЬ: я забыл упомянуть, что эта часть кода находится внутри основной функции wp_enqueue_script.

person Jeton R.    schedule 15.03.2014