Поддержка Проблемы и решения как из meta box вытащить текстовое значение поля???

  • Здравствуйте,

    есть вот такое поле метаданных:

    <select name=»dir_cusotm_field» id=»property-from»>
    <option value=»»>- выберите значение -</option>
    <option value=»sobstvennik» selected=»selected»>Собственник</option>
    <option value=»posrednik»>Посредник</option>
    </select>

    надо вытянуть именно значение «Собственник» или «Посредник»

    делаю так

    echo get_post_meta($post->ID, $key, true);

    выводятся «sobstvennik» или «posrednik», а как вывести кириллицу?????

    помогите пожалуйста 🙁

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    выводятся «sobstvennik» или «posrednik»

    Это именно то, что хранится в базе.

    а как вывести кириллицу?

    Сделать массив ярлыков, соответствующих значениям:

    $labels = array(
    	'sobstvennik' => 'Собственник',
    	'posrednik'   => 'Посредник',
    );
    
    $value = get_post_meta( $post->ID, $key, true );
    if ( isset( $labels[ $value ] ) ) {
    	echo $labels[ $value ];
    }

    Чтобы не дублировать список в нескольких местах, можно этот же массив использовать и при выводе формы в админке, примерно так:

    <select name="dir_custom_field" id="property-from">
    	<option value="">- выберите значение -</option>
    	<?php $current_value = get_post_meta( $post->ID, 'dir_custom_field', true ); ?>
    	<?php foreach ( $labels as $value => $label ) : ?>
    		<option value="<?php echo esc_attr( $value ); ?>" <?php echo selected( $current_value, $value ); ?>><?php echo esc_html( $label ); ?></option>
    	<?php endforeach; ?>
    </select>

    спасибо, я думал еще над таким вариантом:

    эти значения «sobstvennik» и «posrednik» генерирует сам WP, при заполнении полей формы. А надо теперь обратно их переводить в кириллицу… надо только узнать какой функцией WP транслитерирует кириллицу, чтобы обратную сделать…

    в общем пока что сделал так

    function cyrillic_name ($val) {
    	$labels = array(
    		'sobstvennik' => 'Собственник',
    		'posrednik'   => 'Посредник'
    	);
    	if ( isset( $labels[ $val ] ) ) {
    	return $labels[ $val ];
    	}
    	else return $val;
    
    }

    и там где надо ставлю

    $cs_value_k = cyrillic_name($cs_value);

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Тема «как из meta box вытащить текстовое значение поля???» закрыта для новых ответов.