2014-09-10 89 views
-1

我使用此代碼發送一個php變量從wordpress後發送到一個函數,只要單擊一個按鈕,將刪除帖子中的標記「測試」。 只要我在functions.php中使用它,並且沒有使用ajax,標籤刪除功能就可以正常工作。ajax處理程序刪除標記

jQuery(document).ready(function() { 
    setTimeout(function() { 
     jQuery(".taguntagclick").trigger('click'); 
    }, 10); 
}); 

jQuery(document).ready(function() { 
    jQuery('.json_click_handler').click(function() { 
     var c = jQuery(this).attr('rel'); 
     var d = jQuery(this).attr('alt'); 
     jQuery.ajax({ 
      url: 'wp-content/themes/kleinraumv4_ap/projekt-getter.php', 
      data: { 
       'selection': c, 
       'pid': d, 
       'tag': 'test' 
      }, 
      dataType: 'html', 
      success: function() { 
       alert('success'); 
      }, 
      error: function(errorThrown) { 
       alert('error'); 
       console.log(errorThrown); 
      } 
     }); 
    }); 
});  

只要我刷新頁面,我得到的「成功」 - 消息,儘管我還沒有連點擊:

<a href="#" rel="beard" class="json_click_handler taguntagclick" alt="<?php echo $attachment->ID; ?>"> 

而且他還doesn't刪除標籤。

那功能:

include("../../../wp-load.php");  
$selection = $_REQUEST['selection']; 
$post_ids = $_REQUEST['pid']; 
$tags= $_REQUEST['tag']; 


function untag_post($post_ids,$tags) { 
    global $wpdb; 
    if(! is_array($post_ids)) { 
     $post_ids = array($post_ids); 
    } 
    if(! is_array($tags)) { 
     $tags = array($tags); 
    } 

    foreach($post_ids as $post_id) { 
     $terms = wp_get_object_terms($post_id, 'post_tag'); 
     $newterms = array(); 
     foreach($terms as $term) { 
      if (!in_array($term->name,$tags)) { //$term will be a wordpress Term object. 
       $newterms[] = $term; 
      } 
     } 
     wp_set_object_terms($post_id, $newterms, 'post_tag', FALSE); 

    } 
} 

歡呼

+0

ajax調用是在每個頁面加載時觸發的,因爲您已經設置了10微秒的超時時間來執行此操作。爲了真正弄清楚ajax調用發生了什麼,你還應該在發送你的ajax請求的地方發佈projekt-getter.php的內容。 – MSTannu 2014-09-10 20:45:53

+0

您需要在大括號中開始縮進代碼,因爲這只是不可讀的。 – developerwjk 2014-09-10 20:50:07

+0

projekt-getter.php是我發佈的最後一個函數。 – mordondro 2014-09-11 07:15:56

回答

0

我得到它的工作。 $ post_ids和$ post_id有問題。它被分配了兩倍。

這是我對任何人誰喜歡有它最終代碼:

它能做什麼。它在點擊鏈接時指定一個標籤並取消指定舊鏈接。我用它來讓用戶將附件的狀態更改爲已存檔或未更改。

的HTML:

<a href="#" rel="ap_aktuell" class="json_click_handler2" alt="<?php echo $attachment->ID; ?>"><img width="30px" src="<?php echo get_template_directory_uri(); ?>/images/icons/beard.png"></a> 

製作taguntagfunc.php在您的主題,文件夾

include("../../../wp-load.php");  

$selection = $_REQUEST['selection']; 
$post_id = $_REQUEST['pid']; 
$tag= $_REQUEST['tag']; 


if($tag==ap_aktuell){ 
$untag= 'ap_aktuell'; 
$inserttag= 'ap_archiv'; 
untag_post($post_id,$untag); 
wp_set_post_tags($post_id, $inserttag, false); 

} 

elseif($tag==ap_archiv){ 
$untag= 'ap_archiv'; 
$inserttag= 'ap_aktuell'; 
untag_post($post_id,$untag); 
wp_set_post_tags($post_id, $inserttag, false); 

} 

使用這個js腳本來聽的鏈接,已經.json_click_handler2分配。它會在rel和ALT-屬性傳遞給函數:

jQuery(document).ready(function(){ 

jQuery('.json_click_handler2').click(function(){ 

var c = jQuery(this).attr('rel'); 
var d = jQuery(this).attr('alt'); 
jQuery.ajax({ 
      url: 'wp-content/themes/kleinraumv4_ap/taguntagfunc.php', 
      data:{ 
       'pid' : d, 
       'tag' : c 
       }, 
      dataType: 'html', 
      success:function(){ 
         window.location.reload(true); 
    }, 
      error: function(errorThrown){ 
       alert('error'); 
       console.log(errorThrown); 
      } 


    }); 

    }); 
}); 
到functions.php使用

最後下面的函數之一,實際上你想要做什麼。過渡時期援助團。

function untag_post($post_ids,$tags) 
{ 
    global $wpdb; 
    if(! is_array($post_ids)) 
    { 
     $post_ids = array($post_ids); 
    } 

    if(! is_array($tags)) 
    { 
     $tags = array($tags); 
    } 

    foreach($post_ids as $post_id) 
    { 
     $terms = wp_get_object_terms($post_id, 'post_tag'); 
     $newterms = array(); 
     foreach($terms as $term) 
     { 
      if (!in_array($term->name,$tags)) 
      { //$term will be a wordpress Term object. 
       $newterms[] = $term; 
      } 
     } 

     wp_set_object_terms($post_id, $newterms, 'post_tag', FALSE); 
    } 
} 


function get_tag_ID($tag_name) { 
$tag = get_term_by('name', $tag_name, 'post_tag'); 
if ($tag) { 
return $tag->term_id; 
} else { 
return 0; 
} 
} 

我用get_tag_ID獲取當前分配的標記的ID來區分歸檔和不歸檔。