站点范围标签插件中的get_post_meta无法返回自定义字段的值

时间:2011-05-25 作者:DoctorDR

这是我正在玩弄的另一个难题。在sitewide tags pages plugin 它获取一个自定义字段列表(在管理设置中输入),然后将这些字段用作键来读取帖子并在数组中输出键和值。我无法看到它的工作,因此我正在努力确定原因。

以下是其中的常规sitewide-tags.php: http://wordpress.org/extend/plugins/wordpress-mu-sitewide-tags/

*** line 369 in Version: 0.4.1.1 of sitewide-tags.php ***

$meta_keys = apply_filters( \'sitewide_tags_meta_keys\', get_sitewide_tags_option( \'tags_blog_postmeta\', array() ) );
    $global_meta[\'DEBUG TEST1\'] = $meta_keys;
    $global_meta[\'DEBUG TEST2\'] = $post_id;
if( is_array( $meta_keys ) && !empty( $meta_keys ) ) {
    foreach( $meta_keys as $key )
            $global_meta[\'DEBUG TEST3\'] = \'custom loop\';

        $global_meta[$key] = get_post_meta( $post->ID, $key, true );
}
unset( $meta_keys );
我添加了少量的标记来揭示每一步发生的情况。

对于我的测试用例post\\u id#1121,有一个自定义字段位于wp_9_postmeta 表有一个meta\\u键image 具有相应的meta\\u值http://newsite.com/files/2011/05/alfaP.jpg

但是,例程在函数中不返回任何值。

下面是每个调试测试显示的内容;

DEBUG TEST1:

a:7:{i:0;s:11:"video-embed";i:1;s:9:"image-url";i:2;s:8:"link-url";i:3;s:10:"quote-copy";i:4;s:12:"quote-author";i:5;s:9:"quote-url";i:6;s:9:"audio-url";}

DEBUG TEST2: 1121
DEBUG TEST3: Custom Loop
因此,第一个测试(#1)显示所有自定义字段都是从\'get_sitewide_tags_option\' 在第1行。第二个测试(#2)确认它正在查看正确的post\\u id,第三个测试(#3)确认它到达foreach循环,因此通过了条件子句。

编辑:另一个测试是检查foreach循环内的值,并查看其中包含的值$key - 我发现的是$key 包含meta_key 名称(图像、视频嵌入…)理论上,当使用\'get_post_meta\'.

我很想知道为什么没有-有什么想法或建议吗?

1 个回复
SO网友:barbara

我刚刚在我正在开发的一个网站上解决了一个类似的问题——在我将循环代码移动到插件后,我无法从帖子中获得任何元数据。

事实证明,当您在站点范围的插件中运行一个循环时,您访问post meta的方式是不同的。

不要写这样的内容:

get_post_meta($post->ID, \'start-time\', true);
你必须这样写:

get_post_meta(get_the_ID(), \'start-time\', true);
请注意,第一个参数,$post->ID 更改为get_the_ID().这为我解决了问题,希望你也能解决!

结束

相关推荐