我使用此代码将一个php变量从wordpress帖子发送到函数,只要单击一个按钮,就会从帖子中删除标签“test”。 只要我在functions.php和没有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; ?>">
他也没有删除标签。
这就是函数:
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 :(得分: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>
在你的Themes-Folder
中制作taguntagfunc.phpinclude("../../../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-script侦听分配了.json_click_handler2的链接。它会将rel和alt-attributes传递给函数:
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,以区分存档和非存档。