为什么get_post_meta不起作用?

时间:2010-11-15 23:43:56

标签: php wordpress templates wordpress-thesis-theme

简单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 = point是空的 - 好像没有发布任何内容。我已经隔离并回显了get_post_meta,它是一个空格。我100%肯定它在帖子中的名字是正确的 - 有什么东西在我这里找不到吗?

8 个答案:

答案 0 :(得分:7)

如果您在循环中调用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停止工作,因此这也是针对这些特定情况的解决方案之一。

答案 1 :(得分:1)

使用phpmyadmin在wp_posts和wp_postmeta表中搜索术语“slider_image”。然后查看包含它的行,看看里面是否有任何内容。

还尝试将自定义值的名称更改为测试,看看是否有效。我使用这个确切的代码来做类似于你的事情并且它有效:

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

答案 2 :(得分:1)

因为自动保存。 使用这些行来防止自动保存和用户权限。

// 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;

答案 3 :(得分:0)

实际上,它给了你'/',这不是什么。我会说这是'slider_image'保存的内容。检查帖子(或直接检查数据库)。

答案 4 :(得分:0)

我编写了一些简单的模板功能,使您可以在主题中使用元数据(自定义数据)。您可以为任何元数据键/值对编写模板函数,并将其呈现在主题文件中,如下所示:

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

随意查看github的基本功能并尝试一下。您需要将它们添加到主题functions.php文件中。

答案 5 :(得分:0)

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

适合我!

答案 6 :(得分:0)

是否可以链接到错误

#18210(Update_post_meta对meta_key不区分大小写,但get_post_meta不是) - WordPress Trac

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

它会解释不同的体验,取决于db_collat​​ion ...(原谅我,如果它完全是胡说八道,我是新手......)

WordPress数据库字符集和整理配置|关于wordpress的hakre http://hakre.wordpress.com/2010/12/26/wordpress-database-charset-and-collation-configuration/

答案 7 :(得分:0)

<?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 />"; 
}

?>