Php 为什么会出现致命错误:如果($会话[';筛选器1';]==';&)则无法重新声明exc#U post()?
我正在为wordpress编写一个标签过滤插件,但由于某些原因,我得到了一个错误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
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_post2
function 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);