Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么会出现致命错误:如果($会话[';筛选器1';]==';&)则无法重新声明exc#U post()?_Php_Wordpress - Fatal编程技术网

Php 为什么会出现致命错误:如果($会话[';筛选器1';]==';&)则无法重新声明exc#U post()?

Php 为什么会出现致命错误:如果($会话[';筛选器1';]==';&)则无法重新声明exc#U post()?,php,wordpress,Php,Wordpress,我正在为wordpress编写一个标签过滤插件,但由于某些原因,我得到了一个错误 Fatal error: Cannot redeclare exc_post () (previously declared C: \ xampp \ htdocs \ wor \ wp-content \ plugins \ GOG11 \ GOG11.php: 64) in C: \ xampp \ htdocs \ wor \ wp-content \ plugins \ GOG11 \ GOG11.php

我正在为wordpress编写一个标签过滤插件,但由于某些原因,我得到了一个错误

Fatal error: Cannot redeclare exc_post () (previously declared C: \ xampp \ htdocs \ wor \ wp-content \ plugins \ GOG11 \ GOG11.php: 64) in C: \ xampp \ htdocs \ wor \ wp-content \ plugins \ GOG11 \ GOG11.php on line 141
在线

 if ($ _SESSION ['filter2'] == '') {
最奇怪的是,只有在同一条线上

 if ($ _SESSION ['filter1'] == '') {
没有错误 只有在

 ['filter2'] == '' 
对于所有其他值,一切正常 如果我没有跳过,而是指示1,则错误已出现在filter4 jumping filter3上

下面是完整的插件代码

      session_start();
      if ($_POST['filter1']){   
    $_SESSION['filter1'] = $_POST['filter1'];
    }

      if ($_POST['filter2']){   
    $_SESSION['filter2'] = $_POST['filter2'];
    }

     add_shortcode ('wp-r_dop_filter','A2'); 
    function A2(){




        $R1='

<form method="POST" >
<p>Option filter</p>

<p>Filter 1</p>
level 1:  <input type="radio" name="filter1" value="1"' . ($_SESSION["filter1"] == 1 ? 'checked' : '') . '/> 
level 2:  <input type="radio" name="filter1" value="2"' . ($_SESSION["filter1"] == 2 ? 'checked' : '') . '/> 

<p>Filter 2</p>
level 1:  <input type="radio" name="filter2" value="1"' .  ($_SESSION["filter2"] == 1 ? 'checked' : '') .  '/> 
level 2:  <input type="radio" name="filter2" value="2"' .  ($_SESSION["filter2"] == 2 ? 'checked' : '') .  '/> 



<p><input type="submit" value="User"></p>
</form>
       ';

       return  $R1;
    }











if ($_SESSION['filter1'] == ''){

add_filter('pre_get_posts','exc_post'); 
function exc_post($filter1_query_lv0 ) {
    if ($filter1_query_lv0->is_category || ($filter1_query_lv0->is_home || ($filter1_query_lv0->is_feed) || ($filter1_query_lv0->is_tag)))  
    {
$filter1_way_lv0_1 = plugin_dir_url( __FILE__ );  
$filter1_way_lv0_2 = file_get_contents( $filter1_way_lv0_1 . 'filter1/level_1.txt');   
$filter1_way_lv0_3 = explode (",", $filter1_way_lv0_2);  



        $filter1_query_lv0->set('tax_query', array(  
            array(
                'taxonomy' => 'post_tag',
                'field' => 'slug',
                'terms' =>  $filter1_way_lv0_3,  
                'operator' => 'NOT IN'
            )
        ));
    }
    return $filter1_query_lv0;
}
}
else if ($_SESSION['filter1'] == 1){

add_filter('pre_get_posts','exc_post'); 
function exc_post($filter1_query_lv1) {
    if ($filter1_query_lv1->is_category || ($filter1_query_lv1->is_home || ($filter1_query_lv1->is_feed) || ($filter1_query_lv1->is_tag)))  
    {
$filter1_way_lv1_1 = plugin_dir_url( __FILE__ );  
$filter1_way_lv1_2 = file_get_contents( $filter1_way_lv1_1 . 'filter1/level_1.txt');   
$filter1_way_lv1_3 = explode (",", $filter1_way_lv1_2);  



        $filter1_query_lv1->set('tax_query', array(  
            array(
                'taxonomy' => 'post_tag',
                'field' => 'slug',
                'terms' =>  $filter1_way_lv1_3,  
                'operator' => 'NOT IN'
            )
        ));
    }
    return $filter1_query_lv1;
}

}
else if ($_SESSION['filter1'] == 2){

add_filter('pre_get_posts','exc_post'); 
function exc_post($filter1_query_lv2) {
    if ($filter1_query_lv2->is_category || ($filter1_query_lv2->is_home || ($filter1_query_lv2->is_feed) || ($filter1_query_lv2->is_tag)))  
    {
$filter1_way_lv2_1 = plugin_dir_url( __FILE__ );  
$filter1_way_lv2_2 = file_get_contents( $filter1_way_lv2_1 . 'filter1/level_2.txt');   
$filter1_way_lv2_3 = explode (",", $filter1_way_lv2_2);  



        $filter1_query_lv2->set('tax_query', array(  
            array(
                'taxonomy' => 'post_tag',
                'field' => 'slug',
                'terms' =>  $filter1_way_lv2_3,  
                'operator' => 'NOT IN'
            )
        ));
    }
    return $filter1_query_lv2;
}

}   



if ($_SESSION['filter2'] == 1){

add_filter('pre_get_posts','exc_post'); 
function exc_post($filter2_query_lv0) {
    if ($filter2_query_lv0->is_category || ($filter2_query_lv0->is_home || ($filter2_query_lv0->is_feed) || ($filter2_query_lv0->is_tag)))  
    {
$filter2_way_lv0_1 = plugin_dir_url( __FILE__ );  
$filter2_way_lv0_2 = file_get_contents( $filter2_way_lv0_1 . 'filter2/level_1.txt');   
$filter2_way_lv0_3 = explode (",", $filter2_way_lv0_2);  



        $filter2_query_lv0->set('tax_query', array(  
            array(
                'taxonomy' => 'post_tag',
                'field' => 'slug',
                'terms' =>  $filter2_way_lv0_3,  
                'operator' => 'NOT IN'
            )
        ));
    }
    return $filter2_query_lv0;
}
}
else if ($_SESSION['filter2'] == 2){

add_filter('pre_get_posts','exc_post'); 
function exc_post($filter2_query_lv1) {
    if ($filter2_query_lv1->is_category || ($filter2_query_lv1->is_home || ($filter2_query_lv1->is_feed) || ($filter2_query_lv1->is_tag)))  
    {
$filter2_way_lv1_1 = plugin_dir_url( __FILE__ );  
$filter2_way_lv1_2 = file_get_contents( $filter2_way_lv1_1 . 'filter2/level_1.txt');   
$filter2_way_lv1_3 = explode (",", $filter2_way_lv1_2);  



        $filter2_query_lv1->set('tax_query', array(  
            array(
                'taxonomy' => 'post_tag',
                'field' => 'slug',
                'terms' =>  $filter2_way_lv1_3,  
                'operator' => 'NOT IN'
            )
        ));
    }
    return $filter2_query_lv1;
}

}
else if ($_SESSION['filter2'] == ''){

add_filter('pre_get_posts','exc_post'); 
function exc_post($filter2_query_lv2) {
    if ($filter2_query_lv2->is_category || ($filter2_query_lv2->is_home || ($filter2_query_lv2->is_feed) || ($filter2_query_lv2->is_tag)))  
    {
$filter2_way_lv2_1 = plugin_dir_url( __FILE__ );  
$filter2_way_lv2_2 = file_get_contents( $filter2_way_lv2_1 . 'filter2/level_2.txt');   
$filter2_way_lv2_3 = explode (",", $filter2_way_lv2_2);  



        $filter2_query_lv2->set('tax_query', array(  
            array(
                'taxonomy' => 'post_tag',
                'field' => 'slug',
                'terms' =>  $filter2_way_lv2_3,  
                'operator' => 'NOT IN'
            )
        ));
    }
    return $filter2_query_lv2;
}

}
session_start();
如果($_POST['filter1']){
$_SESSION['filter1']=$_POST['filter1'];
}
如果($_POST['filter2']){
$_SESSION['filter2']=$_POST['filter2'];
}
添加_短码('wp-r_dop_filter','A2');
函数A2(){
$R1
选项过滤器

过滤器1

第一级: 第2级: 过滤器2

第一级: 第2级:

'; 返回$R1; } 如果($_会话['filter1']=''){ 添加过滤器('pre_get_posts'、'exc_post'); 函数exc\u post($filter1\u query\u lv0){ if($filter1_query_lv0->is_category | |($filter1_query_lv0->is_home | |($filter1_query_lv0->is_feed)|($filter1_query_lv0->is_tag))) { $filter1\u way\u lv0\u 1=插件目录url(\u文件\u); $filter1\u-way\u-lv0\u 2=文件获取内容($filter1\u-way\u-lv0\u-1.'filter1/level\u 1.txt'); $filter1\u-way\u lv0\u 3=分解(“,”,$filter1\u-way\u lv0\u 2); $filter1\u query\u lv0->set('tax\u query',数组( 排列( “分类法”=>“后标签”, '字段'=>'段塞', “术语”=>$filter1\u way\u lv0\u 3, '运算符'=>'不在' ) )); } 返回$filter1\u query\u lv0; } } else if($\会话['filter1']==1){ 添加过滤器('pre_get_posts'、'exc_post'); 函数exc\u post($filter1\u query\u lv1){ if($filter1_query_lv1->is_category | |($filter1_query_lv1->is_home | |($filter1_query_lv1->is_feed)|($filter1_query_lv1->is_tag))) { $filter1\u way\u lv1\u 1=插件目录url(\u文件\u); $filter1_-way_-lv1_-2=文件获取内容($filter1_-way_-lv1_-1.'filter1/level_1.txt'); $filter1\u-way\u lv1\u 3=分解(“,”,$filter1\u-way\u lv1\u 2); $filter1\u query\u lv1->set('tax\u query',数组( 排列( “分类法”=>“后标签”, '字段'=>'段塞', “术语”=>$filter1\u way\u lv1\u 3, '运算符'=>'不在' ) )); } 返回$filter1\u query\u lv1; } } else if($\会话['filter1']==2){ 添加过滤器('pre_get_posts'、'exc_post'); 函数exc\u post($filter1\u query\u lv2){ if($filter1_query_lv2->is_category||($filter1_query_lv2->is_home||($filter1_query_lv2->is_feed)|($filter1_query_lv2->is_tag))) { $filter1\u way\u lv2\u 1=插件目录url(\u文件\u); $filter1_-way_-lv2_2=文件获取内容($filter1_-way_-lv2_1.'filter1/level_2.txt'); $filter1\u-way\u lv2\u 3=分解(“,”,$filter1\u-way\u lv2\u 2); $filter1\u query\u lv2->set('tax\u query',数组( 排列( “分类法”=>“后标签”, '字段'=>'段塞', “术语”=>$filter1\u路\u 2级\u 3, '运算符'=>'不在' ) )); } 返回$filter1\u query\u lv2; } } 如果($_会话['filter2']==1){ 添加过滤器('pre_get_posts'、'exc_post'); 函数exc\u post($filter2\u query\u lv0){ if($filter2_query_lv0->is_category | |($filter2_query_lv0->is_home | |($filter2_query_lv0->is_feed)|($filter2_query_lv0->is_tag))) { $filter2\u way\u lv0\u 1=插件目录url(\u文件\u); $filter2_-way_-lv0_2=文件获取内容($filter2_-way_-lv0_1.'filter2/level_1.txt'); $filter2\u-way\u lv0\u 3=分解(“,”,$filter2\u-way\u lv0\u 2); $filter2\u query\u lv0->set('tax\u query',数组( 排列( “分类法”=>“后标签”, '字段'=>'段塞', “术语”=>$filter2\u way\u lv0\u 3, '运算符'=>'不在' ) )); } 返回$filter2\u query\u lv0; } } else if($\u会话['filter2']==2){ 添加过滤器('pre_get_posts'、'exc_post'); 函数exc\u post($filter2\u query\u lv1){ if($filter2_query_lv1->is_category | |($filter2_query_lv1->is_home | |($filter2_query_lv1->is_feed)|($filter2_query_lv1->is_tag))) { $filter2\u way\u lv1\u 1=插件目录url(\u文件\u); $filter2_-way_-lv1_-2=文件获取内容($filter2_-way_-lv1_-1.'filter2/level_-1.txt'); $filter2\u-way\u lv1\u 3=分解(“,”,$filter2\u-way\u lv1\u 2); $filter2\u query\u lv1->set('tax\u query',数组( 排列( “分类法”=>“后标签”, '字段'=>'段塞', “术语”=>$filter2\u way\u lv1\u 3, '运算符'=>'不在' ) )); } 返回$filter2\u query\u lv1; } } else if($_会话['filter2']=''){ 添加过滤器('pre_get_posts'、'exc_post'); 函数exc\u post($filter2\u query\u lv2){ if($filter2_query_lv2->is_category | |($filter2_query_lv2->is_home | |($filter2_query_lv2->is_feed)|($filter2_query_lv2->is_tag))) { $filter2\u way\u lv2\u 1=插件目录url(\u文件\u); $filter2_-way_-lv2_2=文件获取内容($filter2_-way_-lv2_1.'filter2/level_2.txt'); $filter2\u-way\u lv2\u 3=分解(“,”,$filter2\u-way\u lv2\u 2); $filter2\u query\u lv2->set('tax\u query',数组( 排列( “分类法”=>“后标签”, '字段'=>'段塞', “术语”=>$filter2\u way\u 2级\u 3, '运算符'=>'不在' ) )); } 返回$filter2\u query\u lv2; } }

代码已经简化。

如果这是您的简化版本,我不想知道原始版本是什么样子。然而,整个问题是,您定义了函数
exc_post
两次-每个过滤器一次,但每次都完全相同。一个简单的解决方案是将第一个过滤器的函数重命名为
exc_post1
,将另一个过滤器的函数重命名为
exc_post2function exc_post($filter, $file) {
    if ($filter->is_category || ($filter->is_home || ($filter->is_feed) || ($filter->is_tag)))
    {
        $dir = plugin_dir_url( __FILE__ );
        $content = file_get_contents( $dir . $file);
        $terms = explode (",", $content);

        $filter->set('tax_query', array(
            array(
                'taxonomy' => 'post_tag',
                'field' => 'slug',
                'terms' =>  $terms,
                'operator' => 'NOT IN'
            )
        ));
    }
    return $filter;
}

if ($_SESSION['filter1'] == '') {
    $file = 'filter1/level_1.txt';
} else if ($_SESSION['filter1'] == 1) {
    $file = 'filter1/level_1.txt';
} else if ($_SESSION['filter1'] == 2) {
    $file = 'filter1/level_2.txt';
}

add_filter('pre_get_posts', function($filter) use ($file) {
    return exc_post($filter, $file);
}, 0);


if ($_SESSION['filter2'] == 1){
    $file = 'filter2/level_1.txt';
} else if ($_SESSION['filter2'] == 2){
    $file = 'filter2/level_1.txt';
} else if ($_SESSION['filter2'] == ''){
    $file = 'filter2/level_2.txt';
}

add_filter('pre_get_posts', function($filter) use ($file) {
    return exc_post($filter, $file);
}, 0);