Вывод custom fields и wp 2.2.2

Что-то я понять не могу, в wp 2.1+ код из рассылки Макса про произвольные поля: http://maxsite.org/ras20#comment-6520
для вывода custom field работал, а сейчас заметила, что для wp 2.2.2 произвольные поля не выводятся способом, описанным в рассылке.

Никто не в курсе, какие изменения были в wp 2.2.2 и как код нужно подправить, чтобы сделать вывод произвольных полей в любом месте шаблона?

В шаблоне таким способом выводятся произвольные поля (wp 2.2.2):

    <?php
if (is_single() || is_page() )
   {
   $text_desc = trim($post_meta_cache[1][$post->ID]['top-title'][0]);
   if ( strlen($text_desc) > 0 ) 
       echo '<h1>' . $text_desc . '</h1>';
      else echo '<h1>Привед!</h1>';
   }
   else echo '<h1>И Вам привед!</h1>';
?>

а вот в title и meta — не выводятся! (wp 2.2.2)
Для 2.1+ работал такой код:

<meta name="description" content="<?php
if (is_single() || is_page() )
   {
   $text_desc = trim($post_meta_cache[1][$post->ID]['description'][0]);
   if ( strlen($text_desc) > 0 ) echo $text_desc;
      else echo 'описание по-умолчанию';
   }
   else echo 'описание по-умолчанию';
?>">

А что же делать с wp 2.2.2?
Или я туплю где-то?

Попробуй так. Первая функция просто для полчения значения мета, вторая выводит description.

function maxsite_get_meta($id = 0, $meta_key = 'none', $do = '', $posle = '', $sep = ' ') {
    $my_meta = get_post_custom_values( $meta_key, $id );
    if ( $my_meta) {
            $val_val = '';
            foreach ( $my_meta as $val_key => $val_val ) $val_val = $val_val . $sep;
            return $do . trim($val_val) . $posle;
        }
    else return false;
}


function maxsite_meta_name_description($def_meta_desc = '') {
    global $post;
    if (is_single() || is_page() ) 
        {
            if ( $text = maxsite_get_meta($post->ID, 'description') )
                echo $text;
                else 
                echo $def_meta_desc;
        }
        else echo $def_meta_desc;
}

Я вот еще такое в Кодексе отрыла:

<?php if (is_single() || is_page() ) { $key="seo-title"; echo get_post_meta($post->ID, $key, true); } ?>

Не знаю, что и почему, но работает! Вне лупа

Попробуй так. Первая функция просто для полчения значения мета, вторая выводит description.

function maxsite_meta_name_description($def_meta_desc = '') {
    global $post;
    if (is_single() || is_page() ) 
        {
            if ( $text = maxsite_get_meta($post->ID, 'description') )
                echo $text;
                else 
                echo $def_meta_desc;
        }
        else echo $def_meta_desc;
}

Пристроила с горем пополам 🙂 Спасибо!

Я через эти функции все произвольняе поля вывожу. Получается несложно. 🙂

description-то сделала, а когда стала с keywords разбираться, что-то моя пристройка рухнула 🙂

Путем почти научного метода (в простонародье называемом методом итерации :)) подобрала работающий код:

<meta name="keywords" content="<?php if (is_single() || is_page() ) { $key='keywords'; echo get_post_meta($post->ID, $key, true); 
if ( strlen($text_desc) > 0 ) echo $text_desc; else echo 'ключевые слова в посте или странице, если поле не заполнено'; }
else { echo 'ключевые слова для всех остальных страниц'; } ?>" />

Тоже вроде ничего, симпатичный.
Слепила из http://codex.wordpress.org/Using_Custom_Fields#PostMeta_Functions + рассылка №20

Можно и так. Разница в формате возвращаемого значения. По мне так get_post_custom_values универсальней, да и попроще работает. 🙂

Anonymous
Отправить
Ответ на: