如何在Shortcode.php中调用贴子的元数据?

时间:2015-09-07 作者:Ste7en

我不是一个非常高级的WordPress开发人员,但我可以在大多数情况下以某种方式找到解决方案。这一次,没有这样的运气:

我正在尝试编写一个短代码来显示自定义的帖子类型,就像页面上的新闻提要一样。这种自定义帖子类型严重依赖于自定义元数据字段,而不是像帖子标题这样的传统字段。

我已经让列表短代码工作了(它显示了缩略图),但我的任何元字段都不会填充。当我使用此代码时,它不会显示任何内容(页面会加载,但此字段不会显示任何内容):

<span class="w-blog-entry-title-h">\'.get_post_meta($post->ID, \'destination\', true).\'</span>
我怀疑这是因为我没有指定post ID,但因为它位于一个短代码中,应该动态拉取它,我想我应该尝试以下操作,但它会打断除菜单栏以外的整个页面(只是菜单以外的一个白色屏幕):

<span class="w-blog-entry-title-h">\'.get_post_meta($post->get_the_ID(), \'destination\', true).\'</span>
显然,在这种情况下,元数据字段名是destination。

我转向你,WordPress大师。。。如果你需要额外的背景,请告诉我。

1 个回复
最合适的回答,由SO网友:Milo 整理而成

第一个不起作用,因为$post 在您的快捷码函数的上下文中不存在,您需要添加global $post; 在它之前。然而

您应该使用get_the_ID() 而不是访问$post 全球直接。在第二个示例中,它不起作用的原因是它不是一个类方法,它只是一个函数$post 只是一个简单的对象(另外,它根本不存在!您的问题与上面的第一个版本相同)。

始终使用debugging enabled 然后,您的空白白屏将显示错误消息,告诉您出了什么问题。

因此,工作版本应为:

get_post_meta( get_the_ID(), \'destination\', true );

相关推荐

SHORTCODE_ATTS()中的$ATTS参数是什么?

这个WordPress developers reference page for shortcode_atts() 国家:$atts(array)(必选)用户在shortcode标记中定义的属性。但我不理解这个定义。例如,在WP Frontend Profile 插件:$atts = shortcode_atts( [ \'role\' => \'\', ], $atts ); 据我所知,shortcode\