如何包含对所有页面类型、日历URL、存档等的支持

时间:2021-08-13 作者:Angel Hess

我正在编写一个插件,在查看日历URL(例如wordpress网站上的日历存档列表)时出现此错误。我不会在帖子或页面上看到错误,只会在通过日历/存档/日历url查看一组帖子时看到错误(我所说的日历url的示例。thewebsite.com/2021/08-不是实际链接-)。(此外,错误显示在搜索页面上。)我假设这个错误意味着我没有包括对其他类型页面的兼容性,比如归档、搜索、按日期显示集的URL等。我对编程是新手。请给我任何意见,如果你有任何想法后,看到这部分代码。错误消息为"Notice: Trying to get property \'post_type\' of non-object" 我正在努力编写更好的代码:

$wp_the_query   = $GLOBALS[\'wp_the_query\'];
$queried_object = $wp_the_query->get_queried_object();
$post_object    = sanitize_post( $queried_object );
$post_type      = $post_object->post_type;
$post_id        = $post_object->ID;
更新:以下是我解决问题的方法,将代码更改为:(如果您看到问题,请发表评论。)

$wp_the_query   = $GLOBALS[\'wp_the_query\'];
$queried_object = $wp_the_query->get_queried_object();

if ( is_singular() ) :
 $post_object    = sanitize_post( $queried_object );
 $post_type      = $post_object->post_type;
 $post_id        = $post_object->ID;
endif;

1 个回复
SO网友:ignatgeorgiev

您需要添加一个检查,以确定当前所在的视图是单个视图页面还是存档(或任何其他分类页面)。如果您在存档页上,则get_queried_object() 不会返回Post对象,因此

需要添加的检查可以是以下内容:

if ( ! is_archive() ) {
    $wp_the_query   = $GLOBALS[\'wp_the_query\'];
    $queried_object = $wp_the_query->get_queried_object();
    $post_object    = sanitize_post( $queried_object );
    $post_type      = $post_object->post_type;
    $post_id        = $post_object->ID;
}