Почему не работает get_post_meta?

Простая проблема WordPress – get_post_meta не извлекает значения настраиваемого поля. Вот код, который извлекается из пользовательских полей:

<img src="<?php echo FCG_PLUGIN_URL; ?>/scripts/timthumb.php?src=<?php echo get_post_meta($post->ID, 'slider_image', true); ?>&h=250&w=400&zc=1" alt="<?php echo $post_title; ?>" /> 

В производстве это HTML, который я получаю:

 <img alt="Post Title" src="http://***.com/wp-content/plugins/jquery-slider-for-featured-content/scripts/timthumb.php?src=/&amp;h=50&amp;w=80&amp;zc=1"> 

Вы можете видеть, что строка src = в строке пуста – как будто ничего не вывешивается из нее. Я изолировал и выбрал только get_post_meta, и это пробел. Я на 100% уверен, что он правильно назван в сообщении – есть ли что-то яркое, что я здесь отсутствует?

Найдите термин «slider_image» в таблицах wp_posts и wp_postmeta, используя phpmyadmin. Затем просмотрите строку, в которой она есть, чтобы увидеть, есть ли что-нибудь внутри.

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

 <p><a href="<?php echo get_post_meta($post->ID, 'resume', true) ?>"><img src="<? bloginfo('template_url'); ?>/img/downloadresume.png"></a></p> 

Если вы вызываете get_post_meta внутри цикла, тогда вы должны вызвать get_post_meta(get_the_id(), 'YOURKEY', true) вместо get_post_meta($post->ID, 'YOURKEY', true)

Странные вещи случаются, когда вы вызываете get_post_meta внутри цикла. В некоторых случаях разработчики взломают $ post в начале, а get_post_meta перестает работать, поэтому это одно из решений для этих конкретных случаев.

Его из-за автоматического сохранения. используйте эти строки для предотвращения автоматического сохранения и пользовательских привилегий.

 // Bail if we're doing an auto save if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; // if our current user can't edit this post, bail if( !current_user_can( 'edit_post' ) ) return; 

Вы также можете использовать get_post_meta ($ loop-> post-> ID,'keykey ', true); если вы используете $ loop = new WP_Query ($ args); или что-то подобное.

Фактически, это дало вам «/», что не является ничем. Я бы сказал, что это то, что было сохранено как «slider_image». Проверьте сообщение (или базу данных напрямую).

Я написал несколько простых функций шаблонов, которые позволяют использовать метаданные (пользовательские данные) в вашей теме. Вы можете написать функцию шаблона для любой пары ключей / значений метаданных и сделать ее в файле темы следующим образом:

 <?php the_meta_templates($meta_data_keys) ?> <?php the_template_for($meta_data_key) ?> 

Не стесняйтесь проверять основные функции от github и дайте им попробовать. Вам нужно будет добавить их в ваш файл functions.php тем.

 <?php get_post_meta(get_the_id(), 'YOURKEY', true) instead of get_post_meta($post->ID, 'YOURKEY', true) ?> 

Работает на меня!

это может быть связано с ошибкой

# 18210 (Update_post_meta нечувствителен к регистру на meta_key, но get_post_meta НЕ) – WordPress Trac

https://core.trac.wordpress.org/ticket/18210

Это объясняло бы разные переживания, в зависимости от db_collation … (простите меня, если это полная чушь, я новичок ..)

Конфигурация и кодировка базы данных WordPress | hakre on wordpress http://hakre.wordpress.com/2010/12/26/wordpress-database-charset-and-collation-configuration/

 <?php // Get custum fields and values $mykey_values = get_post_custom_values('my_key'); foreach ( $mykey_values as $key => $value ) { echo "$key => $value ('my_key')<br />"; } ?>