页面中的快捷码,用于显示也包含快捷码的自定义帖子

时间:2012-08-05 作者:Jaquis

我创建了一个短代码[get_custom_posts] 插入到页面中(默认page 从WordPress获取帖子类型),以获取来自自定义帖子类型的帖子。

在该自定义帖子类型的每个帖子中,用户可以插入一个快捷码[get_attached_images] 获取分配给该特定帖子的附件(图像)。此短代码获取图像的方式是使用全局$post 变量然后,它基本上得到了贴在那篇文章上的所有图像,没有什么太奇怪的。

问题在于获取这些帖子的快捷码([get_custom_posts] ). 它不会返回显示这些自定义帖子及其图像附件(使用[get_attached_images]). 相反,它会显示带有属于页面的附件的自定义帖子(!)不适用于各岗位。

发生的是全球$post 中使用的变量[get_attached_images] shortcode在某种程度上是$post 输出所有这些帖子的页面的变量。

方式[get_custom_posts] shortcode的工作原理是获取属于我想要从中获取帖子的自定义帖子类型的所有帖子。然后使用the_content 筛选以“执行”[get_attached_images] 来自这些自定义帖子的短代码。通过这种方式,可以显示帖子(至少理论上)及其附件。但在实践中,这是行不通的。

有人知道发生了什么事吗?为什么$post 传递给的页的变量[get_attached_images] shortcode而不是每个自定义帖子的$post变量?如何预防这种情况?

1 个回复
SO网友:Simon Hayre

我有一个类似的问题,global$post;正在返回NULL。但如果我不使用短代码,它就可以正常工作。

因此,我找到了一个从URI获取post id的函数,如果需要,您可以扩展它以获取更多信息。

尝试以下操作:

var_dump(url_to_postid($_SERVER[\'REQUEST_URI\']));

结束

相关推荐

Remove action from shortcode

函数中有add\\u action()函数,该函数是add\\u shortcode()的回调函数。你知道如何在自定义插件的帮助下删除这个动作吗?我是否应该挂接到稍后调用的任何操作,然后再添加\\u shortcode()函数?我不想删除和重新添加短代码,因为它之外还有巨大的功能。简单示例:function test_shortcode() { ... other code ... add_action( \'some_hook\', \'custom_function\');&#