Wordpress: 注意:类WP_Post的对象无法在主页上转换为int



我正在开发一个自定义登录页面插件,该插件按预期工作。但是,当我导航到我的主页时,我收到一个错误

注意:类 WP_Post 的对象无法在第 1018 行的 C:\MAMP\htdocs\wp-include\general-template.php 中转换为 int

在我注释掉部分代码后,我发现foreach循环导致了问题。需要一个解决方案。

// Set shortcode Tag
$login_shortcode = 'custom_login_form';

// Retrieve Login Page ID
$page_id = ! empty( $page_id ) ? $page_id : '';
$pages_args = array(
    'post_type' => 'page'
);
$pages = get_pages( $pages_args );
foreach ( $pages as $page ) {
    if ( ( $page->post_title == 'Login' && strpos( $page->post_content, $login_shortcode ) ) && $page->post_status == 'publish' ) {
        $page_id = $page->ID;
    }
}

经过实验,我发现只是通过对变量$page使用另一个名称,错误通知消失了:

我没有使用$page,而是使用$page_list

$pages_args = array( 'post_type' => 'page' ); $page_list = get_pages( $pages_args ); // Wordpress: Notice: Object of class WP_Post could not be converted to int on homepage foreach ( $page_list as $individual_page ) { if ( ( $individual_page->post_title == 'Login' && strpos( $individual_page->post_content, $login_shortcode ) ) && $individual_page->post_status == 'publish' ) { $page_id = $individual_page->ID; } }

>$page是WordPress中的全局变量,所以如果你在模板文件中定义一个$page变量,你基本上覆盖了全局变量,奇怪的事情就会随之而来。

作为一般规则,请始终尽量避免在模板文件中使用像$post这样过于通用的变量,因为它们可能是WordPress中的全局变量,并且模板包含在全局范围内,因此您最终可能会覆盖某些重要内容。

最新更新