我可以两次使用该功能吗?

时间:2018-11-16 18:30:03

标签: php wordpress

我正在编写一个标签过滤插件

      session_start();  
      if ($_POST['filter1']){   
    $_SESSION['filter1'] = $_POST['filter1'];}  
      if ($_POST['filter2']){   
    $_SESSION['filter2'] = $_POST['filter2'];}  
     add_shortcode ('wp-r_dop_filter_ise','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;}
    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);           
        $terms = array_map('add_lang_suffix', $terms);  
        $filter->set('tax_query', array(
            array(
                'taxonomy' => 'post_tag',
                'field' => 'slug',
                'terms' =>  $terms,
                'operator' => 'NOT IN'
            )));}
    return $filter;}
function add_lang_suffix($tag) {  
    return $tag . '-' . pll_current_language();}
add_filter('pre_get_posts',function($filter) use ($file) { 
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';}
    return exc_post($filter, $file);});
 add_filter('pre_get_posts',function($filter) use ($file) {  
 if ($_SESSION['filter2'] == '') {  
    $file = 'filter2/level_1.txt';} 
    else if ($_SESSION['filter2'] == 1) {
    $file = 'filter2/level_1.txt';} 
    else if ($_SESSION['filter2'] == 2) {
    $file = 'filter2/level_2.txt';}
    return exc_post($filter, $file);});

代码已简化。 仅filter2起作用,并且我需要两个过滤器才能起作用。 有没有办法做到这一点? 还是有其他更好的解决方案来解决这个问题? http://static2.keep4u.ru/2018/11/16/23UKa068d74db3c9d011.jpg

0 个答案:

没有答案