如何以块模式访问wp_query

发布于 2025-01-19 14:43:17 字数 803 浏览 0 评论 0原文

我想创建一个高级的“ Next /上一篇文章”块模式(带有标题,功能映像等),它已注册并显示在FullSiteEditor中。

但是,我无法获得当前的帖子对象 /查询。可能是因为在INIT上注册了块模式。所以查询还不可用吗?任何解决此问题的想法都将不胜感激。

简化的代码是:


$works_1 = get_template();
$works_4 = get_site_url();

global $post;
global $wp_query;

$works_not_1 = get_the_ID();
$works_not_2 = get_post($post);
$works_not_3 = $post->ID; // Throws ERROR
$works_not_4 = $wp_query->post->ID; // Throws ERROR
$works_not_5 = get_page_uri($post);
$works_not_5 = get_the_title();

return array(
    'title'         => __('das nächste projekt', 'tttstarter'),
    'categories'    => array('pages'),
    'content'       => '<!-- wp:paragraph --><p>' . esc_html($works_not_3) . '</p><!-- /wp:paragraph -->',
);

I want to create an advanced "next / previous post" block pattern (with title, feature image, etc. ) It' registered and shows up in the FullSiteEditor.

However I can't get the current post object / query. Probably because block patterns are registered at init. So the query is not available yet?! Any ideas how to solve this would be very appreciated.

Simplified Code is:


$works_1 = get_template();
$works_4 = get_site_url();

global $post;
global $wp_query;

$works_not_1 = get_the_ID();
$works_not_2 = get_post($post);
$works_not_3 = $post->ID; // Throws ERROR
$works_not_4 = $wp_query->post->ID; // Throws ERROR
$works_not_5 = get_page_uri($post);
$works_not_5 = get_the_title();

return array(
    'title'         => __('das nächste projekt', 'tttstarter'),
    'categories'    => array('pages'),
    'content'       => '<!-- wp:paragraph --><p>' . esc_html($works_not_3) . '</p><!-- /wp:paragraph -->',
);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

江城子 2025-01-26 14:43:17

对于需要黑客攻击的任何人,我都会使用这个:

$url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$post_id = url_to_postid($url);
$post = get_post($post_id);

For anyone that needs a hack for this, I use this one:

$url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$post_id = url_to_postid($url);
$post = get_post($post_id);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文