未定义的索引和使用isset

时间:2013-05-23 12:10:41

标签: php wordpress

我在wordpress主题中有这个代码,它给了我2个通知

我不是100%确定如何修复它。我尝试过使用isset(),但这对我不起作用并且不断出现错误。

$post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'];
$template_file = get_post_meta($post_id,'_wp_page_template',TRUE);
$array = array('template-homepage1.php', 'template-homepage2.php');

4 个答案:

答案 0 :(得分:2)

你也可以尝试一下。

 if(isset($_GET['post']))
   {  
   $post_id = $_GET['post'];
    }
 if(isset($_POST['post_ID']))  
    {
   $post_id =  $_POST['post_ID'] ;
    }

答案 1 :(得分:0)

你需要首先初始化变量,或者使用empty()或isset()检查php忽略通知

$post_id = '';$template_file='';
$post_id = (!empty($_GET['post']) ? $_GET['post'] : $_POST['post_ID']) ;

$template_file = get_post_meta($post_id,'_wp_page_template',TRUE);
$array = array('template-homepage1.php', 'template-homepage2.php');

或尝试从php.ini中删除php通知

答案 2 :(得分:0)

您可以尝试使用isset()检查$_GET变量和if else条件是否在需要的地方指定值

if(isset($_GET['post']) 
{
    $post_id = $_GET['post'];
} else {
    if(isset($_POST['post_ID']) 
    { 
         $post_id = $_POST['post_ID'];
    } else {
         $post_id = '';
    }
}

答案 3 :(得分:0)

$post_id = isset($_GET['post']) ? $_GET['post'] : isset($_POST['post_ID']) ? $_POST['post_ID'] : 0 ;

但这样使用if可能更具可读性

$post_id = 0;

if(isset($_GET['post'])) $post_id = $_GET['post'];
else if(isset($_POST['post_ID']) $post_id = $_POST['post_ID'];