有没有一种方法可以扩展WP_QUERY,以便自定义帖子类型可以具有属性?

时间:2021-10-31 作者:liquidRock

无法找到有关此的信息。在处理大量元数据/自定义字段时,我更愿意简化在模板中获取元数据的过程,而不是使用get_post_meta 相反,将该数据的设置保留在其所属的后端,以保持我的模板干净且易于使用。

有没有办法做到这一点?

<p><?php echo $something->meta_field_name ?></p>
这类似于你可以做的事情$post->ID$post->post_parent 这是WordPress核心中的,但它将用于自定义帖子类型和自定义字段。如果这不可能,我想下一个问题是,为什么?

编辑:因为我在回复中多次提到这一点,所以在编写这样的PHP时,您必须转义输出,我就是这么做的。为了简洁起见,我省略了转义,但对于任何一个新手来说,我通常会这样写(感谢@fuxia为我最初的问题提供了解决方案)。

WordPress的转义(使用解决方案):

<p id="text-<?php echo esc_attr($post->post_name) ?>"><?php echo esc_html($post->meta_key_name) ?></p>
如果要输出到类:

<p class="text-<?php echo sanitize_html_class($post->post_title) ?>">Clean Class</p>
我通常不会使用post_title 但以它为例sanitize_html_class 将删除空白,只保留字母数字字符、下划线和破折号。

如果输出JSON-LD之类的内容,可以结合转义:

"@id": "<?php echo esc_js(esc_url($link)) ?>#<?php echo esc_js($post->post_name) ?>",
"name": "<?php echo esc_js($post->post_title) ?>"

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

从获取元数据WP_Post 对象已经是可能的。只需写下:

echo $post->your_meta_key;
这将调用get_post_meta( $this->ID, $your_meta_key, true ) 在幕后。

有关详细信息,请参阅文档和源代码WP_Post.

这也适用于WP_User, 但不是用WP_Comment 据我所知。

不要忘记退出输出!

相关推荐

wp_redirect and get variables

我正在使用wp\\u重定向将用户发送回管理页面。除了由于某种原因被删除的get变量外,一切都正常。 $url = \"admin.php?page=cv_data&saved\"; wp_redirect(admin_url($url)); 将罚款重定向到admin.php?page=cv_data&saved半秒钟后,url将丢失“saved”变量。admin.php?page=cv_data我试图使用“saved”get变量触发一些CSS,并向用户提供表