افترض أنني قمت بإنشاء نوع منشور جديد 'product'
. هل هناك طريقة لأداء وظيفة (أنشأها المستخدم) عند إنشاء منشور 'product'
الجديد؟
في وظائف.
function mynewproduct(){
myfunction();
}
add_action( 'new_product', 'mynewproduct' );
لمزيد من الوثائق الرسمية ، يرجى الرجوع إلى:
مرحبًا @ الدوتي:
ألقِ نظرة على نهاية الدالة 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);
}
سيتم استدعاء الدالة wp_transition_post_status
، وسيؤدي ذلك إلى تشغيل الإجراء "${new_status}_$post->post_type"
، لذلك إذا انتقل product
إلى حالة publish
، فسيتم تشغيل الإجراء publish_product
.