以下の機能が必要です。カスタム投稿タイプが更新または保存されるたびに、特定のカスタム投稿メタを上書きする必要があります。
これが投稿タイプ 'VA_LISTING_PTYPE'の投稿と 'meta_key' => 'featured-cat'に 'meta_value' => 1を持つ投稿のみに影響することを確認する必要があります
私が現在使用しているコードは次のとおりです(動作していません)。
//Remove urls from free listings
function remove_url_free_post( $post_id ) {
$slug = 'VA_LISTING_PTYPE',
if ( $slug != $_POST['post_type'] ) {
return;
}
$meta_values = get_post_meta( $post_id, 'featured-cat', true );
if ( $meta_values != 1 ) {
return;
}
update_post_meta($post_id, 'website', '');
update_post_meta($post_id, 'Twitter', '');
update_post_meta($post_id, 'facebook', '');
}
add_action('save_post', 'remove_url_free_post');
私はこれから来ているpre_post_updateのような異なるアクションフックも試してみました answer
うまくいかないようです。私にとって今うまくいっている唯一の本当に醜い修正はこれです:
//Remove urls from free listings
function remove_url_free_post() {
//Fetches all the listings that have featured cat which equals free listing for us
$r = new WP_Query(
array(
'post_type' => VA_LISTING_PTYPE,
'no_found_rows' => true,
'meta_key' => 'featured-cat',
'meta_value' => 1
) );
if ( $r->have_posts() ) :
while ( $r->have_posts() ) : $r->the_post();
//removes the website, Twitter and facebook
$post_id3 = get_the_ID();
update_post_meta($post_id3, 'website', '');
update_post_meta($post_id3, 'Twitter', '');
update_post_meta($post_id3, 'facebook', '');
endwhile;
endif;
}
//Not ideal at all as called everytime, save_post not working as intended
add_action('wp_footer', 'remove_url_free_post');
あなたは 'save_post'アクションフックを使うのが正しいです。
これを試して:
<?php
add_action('save_post', 'some_function');
function some_function($post_id)
{
if(get_post_type($post_id) != "VA_LISTING_PTYPE")
return;
$meta_value = get_post_meta( $post_id, 'featured-cat', true );
if($meta_value != 1)
return;
update_post_meta($post_id, 'website', '');
update_post_meta($post_id, 'Twitter', '');
update_post_meta($post_id, 'facebook', '');
}
wordpress 3.7以上を使用している場合は、この方法で使用できます。
add_action('save_post_VA_LISTING_PTYPE', 'some_function');
function some_function($post_id)
{
$meta_value = get_post_meta( $post_id, 'featured-cat', true );
if($meta_value != 1)
return;
update_post_meta($post_id, 'website', '');
update_post_meta($post_id, 'Twitter', '');
update_post_meta($post_id, 'facebook', '');
}
私はそれがあなたと共に働くことを願っています。