WooCommerceでは、2行のコード行を追加して製品の説明を変更すると、製品ステータスの変更時に、送信時にWebサイトがエラーをスローします(saving)。
私のコード:
add_action('transition_post_status', 'new_product_add', 10, 3);
function new_product_add($new_status, $old_status, $post) {
if(
$old_status != 'publish'
&& $new_status == 'pending'
&& !empty($post->ID)
&& in_array( $post->post_type,
array( 'product')
)
) {
$term = get_term_by('name', 'فروش پیج اینستاگرام', 'product_cat');
wp_set_object_terms($post->ID, $term->term_id, 'product_cat', true);
/******************************/
$product = wc_get_product($post->ID);
$product->set_description("something");
$product->save();
/******************************/
}
}
ご覧のように、これらの最後の3行は、ページの更新で問題が発生し、製品の説明も更新されますが、エラーが表示されます
"サイトIS技術的な困難の経験"
それらを削除すると問題なく動作し、成功したメッセージが表示されます
[〜#〜]更新[〜#〜]
Wordpress方法でこれらの3行を変更しました
wp_update_post( array('ID' => $post->ID, 'post_content' => "something"));
まだ仕事をしますが、成功したメッセージの代わりに私にこの技術的なエラーを与えます
アップデートII
Chromeコンソールを開くと、このエラーも表示されます
Failed to load resource: the server responded with a status of 500 () (index):1
wp_update_post()
を使用しているときに_transition_post_status
_フックで無限ループが発生しないようにするには、次のことを試してください。
_add_action('transition_post_status', 'new_product_add', 10, 3);
function new_product_add($new_status, $old_status, $post) {
if(
$old_status != 'publish'
&& $new_status == 'pending'
&& !empty($post->ID)
&& $post->post_type === 'product'
) {
$term = get_term_by('name', 'فروش پیج اینستاگرام', 'product_cat');
wp_set_object_terms($post->ID, $term->term_id, 'product_cat', true);
// unhook this function so it doesn't loop infinitely
remove_action( 'transition_post_status', 'new_product_add', 10 );
wp_update_post( array('ID' => $post->ID, 'post_content' => "something"));
// re-hook this function
add_action( 'transition_post_status', 'new_product_add', 10, 3 );
}
}
_
または:
_add_action('transition_post_status', 'new_product_add', 10, 3);
function new_product_add($new_status, $old_status, $post) {
if(
$old_status != 'publish'
&& $new_status == 'pending'
&& !empty($post->ID)
&& $post->post_type === 'product'
) {
$term = get_term_by('name', 'فروش پیج اینستاگرام', 'product_cat');
wp_set_object_terms($post->ID, $term->term_id, 'product_cat', true);
$product = wc_get_product($post->ID);
// unhook this function so it doesn't loop infinitely
remove_action( 'transition_post_status', 'new_product_add', 10 );
$product->set_description("something");
$product->save();
// re-hook this function
add_action( 'transition_post_status', 'new_product_add', 10, 3 );
}
}
_
それはあなたの問題を解決するかもしれません。
これは ここで
wp_update_post()
for _save_post
_フックについて文書化されています。