it-swarm.asia

استدعاء وظيفة بعد إنشاء منشور جديد لنوع نشر مخصص في WordPress؟

افترض أنني قمت بإنشاء نوع منشور جديد 'product'. هل هناك طريقة لأداء وظيفة (أنشأها المستخدم) عند إنشاء منشور 'product' الجديد؟

7
dotty

في وظائف.

function mynewproduct(){
    myfunction();
}
add_action( 'new_product', 'mynewproduct' );

لمزيد من الوثائق الرسمية ، يرجى الرجوع إلى:

http://codex.wordpress.org/Post_Status_Transitions

5
Tom J Nowell

مرحبًا @ الدوتي:

ألقِ نظرة على نهاية الدالة wp_insert_post() في الملف /wp-includes/post.php (على الأسطر 2148 إلى 2392 في WordPress 3.0.1. لاحظ أن WordPress يستخدم هذه الوظيفة لإضافة المنشورات وتحديثها. )

في النهاية يحتوي على الكود التالي. من هذا الرمز ، يمكنك تحديد الدعوة إلى wp_transition_post_status() (المزيد عن ذلك بشكل جزئي) ولدينا سنانير الإجراءات edit_post و post_updated و save_post و wp_insert_post ( بصراحة لا أعرف لماذا لدينا الأخيران بدلاً من واحد ) يمكنك استخدام أي من تلك التي تناسب احتياجاتك:

<?php
wp_transition_post_status($data['post_status'], $previous_status, $post);
if ( $update ) {
  do_action('edit_post', $post_ID, $post);
  $post_after = get_post($post_ID);
  do_action( 'post_updated', $post_ID, $post_after, $post_before);
}
do_action('save_post', $post_ID, $post);
do_action('wp_insert_post', $post_ID, $post);
return $post_ID;

وJan Fabry ذكر أن هناك سنانير الإجراء الموجودة في wp_transition_post_status() (في 2713 إلى 2717 من /wp-includes/post.php في WordPress 3.0.1.) لاحظ أن هناك ثلاثة منهم ؛ استخدام حسب الاقتضاء:

<?php
function wp_transition_post_status($new_status, $old_status, $post) {
  do_action('transition_post_status', $new_status, $old_status, $post);
  do_action("${old_status}_to_$new_status", $post);
  do_action("${new_status}_$post->post_type", $post->ID, $post);
}
3
MikeSchinkel

سيتم استدعاء الدالة wp_transition_post_status ، وسيؤدي ذلك إلى تشغيل الإجراء "${new_status}_$post->post_type" ، لذلك إذا انتقل product إلى حالة publish ، فسيتم تشغيل الإجراء publish_product.

2
Jan Fabry