Поддержка Проблемы и решения Стиль произвольного поля

  • Здравствуйте,
    У меня есть сайт про кино, недавно я добавил в админке произвольные поля..и вот с ним и появилась небольшая проблема..

    на рисунке наглядно видно

    http://s008.radikal.ru/i303/1206/27/e6f0358118f9.jpg

    есть два поля — время1 и время2 и если какое-либо поле оставить пустым то остается кусочек заднего фона, это выглядит как-то некрасиво

    и хотелось бы узнать можно ли это как-то исправить?

    код файла functions.php:

    <?php
    if ( function_exists('register_sidebar') )
        register_sidebar();
    
    	add_theme_support('post-thumbnails');
    	set_post_thumbnail_size(140);
    
    ?>
    <?php // подключаем функцию активации мета блока (my_extra_fields)
    add_action('admin_init', 'my_extra_fields', 1);
    add_action('admin_init', 'my_extra_fields2', 1);
    
    function my_extra_fields() {
        add_meta_box( 'extra_fields', 'Время сеанса 1', 'extra_fields_box_func', 'post', 'normal', 'high'  );
    }
    function my_extra_fields2() {
        add_meta_box( 'extra_fields2', 'Время сеанса 2', 'extra_fields2_box_func', 'post', 'normal', 'high'  );
    }
    // код блока
    function extra_fields_box_func( $post ){
    ?>
    	<p><label><input type="text" name="extra[title]" value="<?php echo get_post_meta($post->ID, 'title', 1); ?>" style="width:50%" /></label></p>
    
    	<input type="hidden" name="extra_fields_nonce" value="<?php echo wp_create_nonce(__FILE__); ?>" />
    <?php
    }
    function extra_fields2_box_func( $post ){
    ?>
    	<p><label><input type="text" name="extra[title2]" value="<?php echo get_post_meta($post->ID, 'title2', 1); ?>" style="width:50%" /></label></p>
    
    	<input type="hidden" name="extra_fields2_nonce" value="<?php echo wp_create_nonce(__FILE__); ?>" />
    <?php
    }
    // включаем обновление полей при сохранении
    add_action('save_post', 'my_extra_fields_update', 0);
    add_action('save_post', 'my_extra_fields2_update', 0);
    
    /* Сохраняем данные, при сохранении поста */
    function my_extra_fields_update( $post_id ){
        if ( !wp_verify_nonce($_POST['extra_fields_nonce'], __FILE__) ) return false; // проверка
    	if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE  ) return false; // выходим если это автосохранение
    	if ( !current_user_can('edit_post', $post_id) ) return false; // выходим если юзер не имеет право редактировать запись
    
    	if( !isset($_POST['extra']) ) return false;	// выходим если данных нет
    
    	// Все ОК! Теперь, нужно сохранить/удалить данные
    	$_POST['extra'] = array_map('trim', $_POST['extra']); // чистим все данные от пробелов по краям
    	foreach( $_POST['extra'] as $key=>$value ){
    		if( empty($value) )
    			continue delete_post_meta($post_id, $key); // удаляем поле если значение пустое
    
    		update_post_meta($post_id, $key, $value); // add_post_meta() работает автоматически
    	}
    	return $post_id;
    }
    function my_extra_fields2_update( $post_id ){
        if ( !wp_verify_nonce($_POST['extra_fields2_nonce'], __FILE__) ) return false; // проверка
    	if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE  ) return false; // выходим если это автосохранение
    	if ( !current_user_can('edit_post', $post_id) ) return false; // выходим если юзер не имеет право редактировать запись
    
    	if( !isset($_POST['extra']) ) return false;	// выходим если данных нет
    
    	// Все ОК! Теперь, нужно сохранить/удалить данные
    	$_POST['extra'] = array_map('trim', $_POST['extra']); // чистим все данные от пробелов по краям
    	foreach( $_POST['extra'] as $key=>$value ){
    		if( empty($value) )
    			continue delete_post_meta($post_id, $key); // удаляем поле если значение пустое
    
    		update_post_meta($post_id, $key, $value); // add_post_meta() работает автоматически
    	}
    	return $post_id;
    }
    ?>

    может быть сделать например так — в индексном файле запустить условие «если строка пустая то такая запись, если нет то другая»? =)

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Так не тот код привели в посте — это код обработки произвольных полей в админке. А нужно поправить код, который формирует представленный на вашей картинке списочек. И если там много, то во избежание претензий от администрации, выложите его на pastebin.com

    вроде немного:

    <!--НАЧИНАЮТСЯ НОВОСТИ-->
    	<tr><td valign='top'>
    		<table  cellpadding="0" cellspacing="0" width='100%'>
    
    			<?php query_posts($query_string.'&cat=3'); ?>
    			<?php if(have_posts()) : ?>
    			<?php while(have_posts()) : the_post(); ?>
    				<!-- начало поста -->
    				<tr>
    				<td><img src="<?php bloginfo('template_url'); ?>/images/film.png" width="16" height="16" /></td>
    				<td  class="title" style='border-bottom:1px dotted #9b9b9b; padding:8px'><ul class="sf-menu">
    				<li class="current">
    				<a href="<?php the_permalink();?>"><?php the_title();?></a>
    				<?php echo get_post_meta($post->ID, 'my_extra_fields', true); ?>
    
    				</li></ul></td>
    
    				<td width='80' valign='top'  style='padding:8px'>
    
    				<table cellpadding="3" cellspacing="3" >
    				<tr>
    				<!--время фильма-->
    				<td class='menu2'><?php echo get_post_meta($post->ID, 'title', true); ?></td>
    				<td class='menu2'><?php echo get_post_meta($post->ID, 'title2', true); ?></td></tr>
    
    				</table>
    
    				</td>
    
    				</tr>
    			<!-- конец поста -->
    
    		<?php endwhile; ?>
    		<?php endif; ?>
    
    		</table></td>
    		</tr>
    	<!--конец вывода-->

    <td class=’menu2′> отвечает за задний фон

    эх, вродебы небольшая проблема, а как достает =)

    А, то лишнее место, что вы видите — это пустой <td class=’menu2′>. Я бы сделал примерно так:

    <!--время фильма-->
    <?php $title = get_post_meta($post->ID, 'title', true); $title1 =  get_post_meta($post->ID, 'title2', true); ?>
    <?php if ($title != "") { ?>
    <td class='menu2'><?php echo $title; ?></td>
    <?php
    } if ($title1 != "") { ?>
    <td class='menu2'><?php echo $title1; ?></td>
    <?php } ?>
    </tr>

    Здорово! Помогло, спасибо =)
    буду знать теперь

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Тема «Стиль произвольного поля» закрыта для новых ответов.