我在页面中使用元数据来存储变量,并对动态生成的PayPal按钮和其他页面变量(特定于页面)进行服务器端缓存。
我试图钩住页面元数据的更新、添加和删除功能。更新和添加功能很好(都具有相同的功能),但我无法理解删除。
为了使用delete\\u post\\u数据,我需要post_id
但是do_action
没有从WordPress的源代码中返回(至少我能理解),它似乎返回了以下内容:
do_action( \'delete_postmeta\', $postmetaids ); //sometimes $post_meta_ids
在哪里
$postmetaids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE meta_key = %s", $post_meta_key ) );
或
$post_meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE post_id = %d ", $postid ));
我用来调用挂钩的代码:
add_action (\'update_postmeta\', \'wp_paypal_meta_change\',1,4);
add_action (\'add_postmeta\', \'wp_paypal_meta_change\', 1, 4);
add_action (\'delete_postmeta\',\'wp_paypal_meta_delete\', 1, 2);
删除功能:
function wp_paypal_meta_delete($post_id, $meta_keys){
/*
handles cases where the user intentionally deletes the metadata, and deletes
the appropriate hidden metadata variable in order to make sure the cached
PayPal form matches the product data.
*/
if ($meta_keys == \'image\'){
delete_post_meta($post_id,\'_thumb\');
} else if ($meta_keys == \'shipping\' || $meta_keys == \'cost\' || $meta_keys== \'bookname\'){
delete_post_meta($post_id,\'_paypal\');
}
}
我知道
$post_id
没有进入函数,但它在那里,因为我希望WordPress以某种方式引用它-不起作用。