هذه جميع الإجراءات والفلترات التي يوفرها مكون WP Discourse. الأمثلة توضيحية فقط. ستحتاج إلى اختبار الأمثلة والتحقق منها على مثيلتك الخاصة قبل استخدامها في بيئة الإنتاج.
الفلاتر
لشرح عام حول كيفية استخدام الفلاتر في ووردبريس، راجع:
النشر
فلاتر نشر WP Discourse.
discourse_post_types_to_publish
فلتر أنواع المنشورات التي تظهر في قائمة إعداد “أنواع المنشورات للنشر”. لاحظ أن هذا لن يفعل أو يعطل نشر Discourse لأنواع المنشورات.
مثال
إظهار نوع “post” فقط:
function filter_post_types( $post_types ) {
return array( 'post' );
}
add_filter( 'wp_discourse_publish_categories', 'filter_post_types', 10, 1);
wpdc_publish_private_post
نشر منشورات ووردبريس الخاصة إلى Discourse.
مثال
function wpdc_custom_publish_private_post( $publish, $post_id ) {
return 'private' === get_post_status( $post_id );
}
add_filter( 'wpdc_publish_private_post', 'wpdc_custom_publish_private_post', 10, 2 );
wpdc_publish_after_save
ما إذا كان يجب نشر منشور معين إلى Discourse.
مثال
wp_discourse_before_xmlrpc_publish
ما إذا كان يجب نشر منشور معين إلى Discourse باستخدام xmlrpc.
مثال
عدم نشر منشورات xmlrpc التي تحتوي على “تفاح” في العنوان.
function publish_after_save ( $publish_to_discourse, $post ) {
return strpos($post->post_title, 'apples') !== false;
}
add_filter( 'wpdc_publish_after_save', 'publish_after_save', 10, 2 );
wpdc_publish_format_title
تعديل عنوان موضوع Discourse.
مثال
wp_discourse_excerpt
تعديل محتوى المنشورات المرسلة إلى Discourse.
مثال
wpdc_publish_post_category
تغيير الفئة التي يتم نشر المنشور فيها.
مثال
نشر المنشورات دائمًا في فئة “ملاحظات الموقع”.
function wpdc_change_post_category( $category, $post_id ) {
$categories = WPDiscourse\Utilities\Utilities::get_discourse_categories();
return array_search("Site Feedback", array_column($categories, 'name'));
}
add_filter( 'wpdc_publish_post_category', 'wpdc_change_post_category' );
wp_discourse_publish_categories
فلتر الفئات التي تظهر في إعداد الفئة في الشريط الجانبي لـ WP Discourse عند إنشاء أو تحرير منشور ووردبريس.
مثال
إظهار فئة “ملاحظات الموقع” فقط:
function filter_categories( $categories ) {
return array_filter( $categories, function( $category ){
return $category['name'] === 'Site Feedback';
});
};
add_filter( 'wp_discourse_publish_categories', 'filter_categories', 10, 1);
wpdc_publish_unlisted
تحديد ما إذا كان المنشور المنشور غير مدرج في Discourse.
مثال
النشر كغير مدرج إذا كان المنشور يحتوي على المصطلح “document” في تصنيف ووردبريس “knowledge_base”.
function wpdc_unlisted_for_site_feedback( $unlisted, $post, $post_id ) {
return has_term( "document", "knowledge_base", $post ) || $unlisted;
}
add_filter( 'wpdc_publish_unlisted', 'wpdc_unlisted_for_site_feedback' );
wpdc_discourse_username
تعيين اسم مستخدم Discourse ليكون هو اسم المؤلف للمنشور في Discourse.
مثال
تعيين “angus” كمؤلف لجميع المنشورات المنشورة إلى Discourse.
function wpdc_custom_username( $discourse_username, $author_id ) {
return 'angus';
}
add_filter( 'wpdc_discourse_username', 'wpdc_custom_username' );
wpdc_publish_body
تعديل الجسم المرسَل عند إنشاء أو تحديث المنشورات.
مثال
إضافة الوسوم tag1 و tag2 إلى كل منشور.
add_filter( 'wpdc_publish_body', function( $body, $remote_post_type ) {
if ( 'create_post' === $remote_post_type ) {
$body['tags'] = array( 'tag1', 'tag2' );
}
return $body;
}, 10, 2);
الإعدادات
فلاتر إعدادات WP Discourse.
wpdc_utilities_options_array
تعديل أي إعداد يستخدمه WP Discourse في الوقت الذي تُستخدم فيه الإعدادات في الكود.
مثال
تعيين عنوان URL الخاص بـ Discourse تلقائيًا إلى https://wordpress.pavilion.tech، بغض النظر عن ما يتم إدخاله في لوحة الإدارة
function filter_network_url_setting( $options) {
$options["discourse_url"] = "https://wordpress.pavilion.tech";
return $options;
}
add_filter( 'wpdc_utilities_options_array', 'filter_network_url_setting', 10, 1);
wpdc_validate_site_*
فلتر أي إعداد شبكة لـ WP Discourse عند استخدام شبكة متعددة المواقع، باستخدام التنسيق: wpdc_validate_site_[underscored_setting_name]
مثال
تعيين عنوان URL الخاص بـ Discourse تلقائيًا إلى https://wordpress.pavilion.tech بغض النظر عن ما يتم إدخاله في لوحة الإدارة
function filter_multisite_network_url_setting( $value ) {
return "https://wordpress.pavilion.tech";
}
add_filter( 'wpdc_validate_site_url', 'filter_multisite_network_url_setting', 10, 1);
wpdc_category_cache_minutes
مدة تخزين قائمة الفئات مؤقتًا. الافتراضي هو 10 دقائق.
مثال
تغيير فترة التخزين المؤقت إلى 5 دقائق.
function change_category_cache_minutes( $default ) {
return 5;
}
add_filter( 'wpdc_category_cache_minutes', 'change_category_cache_minutes', 10, 1);
التعليقات
فلاتر تتعلق بتعليقات Discourse في ووردبريس.
discourse_post_avatar_template_size
تعيين حجم الصورة الرمزية المستخدمة في التعليقات. الأحجام المتاحة محددة في إعداد موقع Discourse avatar sizes (الافتراضي: 20|25|32|45|60|120).
مثال
function filter_avatar_size( $size ) {
return 32;
}
add_filter( 'discourse_post_avatar_template_size', 'filter_avatar_size', 10, 1);
wpdc_comment_body
فلتر HTML جسم التعليق.
مثال
discourse_participant_avatar_template_size
تعيين حجم الصور الرمزية للمشاركين (نفس خيارات discourse_post_avatar_template_size).
مثال
function filter_participant_avatar_size( $size ) {
return 20;
}
add_filter( 'discourse_participant_avatar_template_size', 'filter_participant_avatar_size', 10, 1);
wpdc_join_discussion_link_text
تعيين نص رابط “انضم إلى النقاش”. استخدم فقط إذا لم تكن خيارات النص مناسبة.
مثال
wpdc_comment_sync_period
تعيين فترة المزامنة للتعليقات بالثواني. الافتراضي 600، أي 10 دقائق.
مثال
تعيين فترة المزامنة إلى 5 دقائق.
function custom_comment_sync_period( $minutes, $post_id ) {
return 300;
}
add_filter( 'wpdc_comment_sync_period', 'custom_comment_sync_period', 10, 2);
wpdc_single_page_comment_number_sync
تحديد ما إذا كان يجب جلب أعداد تعليقات Discourse وفقًا للجدول الزمني العادي لمدة 10 دقائق (إرجاع true) أو جدول زمني أطول لمدة 24 ساعة (إرجاع false)، ويُستخدم عادةً لصفحات الأرشيف (يمكن أيضًا تعيينه باستخدام discourse_archive_page_sync_period، انظر أدناه).
مثال
مزامنة أعداد التعليقات كل 10 دقائق في المنشورات والصفحة الرئيسية، وكل 24 ساعة في الصفحات الأخرى.
function my_namespace_single_page_sync( $single_page, $post_id ) {
return is_front_page() || is_single( $post_id );
}
add_filter( 'wpdc_single_page_comment_number_sync', 'my_namespace_single_page_sync', 10, 2 );
discourse_archive_page_sync_period
تعيين فترة مزامنة عدد التعليقات في صفحة الأرشيف بالثواني، الافتراضي 86400 (24 ساعة).
مثال
wpdc_load_comments_template_for_user
تحديد ما إذا كان قالب تعليقات WP Discourse يتم تحميله لمستخدم معين.
مثال
عدم تحميل التعليقات لمستخدم بمعرف 1.
function load_comment_template_for_user( $load_template, $current_user, $post_id ) {
return $current_user->ID !== 1;
add_filter( 'wpdc_load_comments_template_for_user', 'load_comment_template_for_user', 10, 3 );
wpdc_comments_count
فلتر عدد التعليقات لمنشورات معينة.
مثال
function filter_comments_count( $count, $post_id, $discourse_post_id ) {
## تغيير عدد التعليقات
}
add_filter( 'wpdc_comments_count', 'filter_comments_count`, 10, 3 );
discourse_replies_html
تغيير HTML التعليقات.
مثال
discourse_no_replies_html
تغيير HTML المعروض عند عدم وجود تعليقات.
مثال
discourse_no_connection_html
تغيير HTML المعروض عند عدم وجود اتصال بـ Discourse.
مثال
discourse_comment_html
تغيير HTML التعليقات الفردية
مثال
discourse_participant_html
تغيير HTML المشاركين
مثال
discourse_publish_format_html
تغيير HTML تفاصيل منشور ووردبريس في المحتوى المنشور إلى Discourse.
مثال
مزود DiscourseConnect
فلاتر مزود DiscourseConnect الخاص بـ WP Discourse.
discourse_email_verification
تحديد ما إذا كان Discourse بحاجة للتحقق من بريد المستخدم الإلكتروني عند تسجيل الدخول باستخدام DiscourseConnect.
مثال
طلب التحقق من البريد الإلكتروني إذا كان بريد المستخدم الإلكتروني ليس من نطاق discourse.org.
function require_email_verification_for_external_domains( $require_activation, $user ) {
$user_info = get_userdata( $user->ID );
return strpos( $user_info->user_email, 'discourse.org' ) == false || $require_activation;
}
add_filter( 'discourse_email_verification', 'require_email_verification_for_external_domains`, 10, 2 );
wpdc_email_verification_not_verified
فلتر نتيجة التحقق من البريد الإلكتروني عندما تكون خاطئة.
مثال
إرجاع نتيجة تحقق صحيحة دائمًا إذا كان بريد المستخدم الإلكتروني ضمن نطاق discourse.org.
function wpdc_custom_email_verification_not_verified( $verified, $user_id) {
$user_info = get_userdata( $user_id );
return strpos( $user_info->user_email, 'discourse.org' ) !== false || $verified;
}
add_filter( 'wpdc_email_verification_not_verified', 'wpdc_custom_email_verification_not_verified`, 10, 2 );
wpdc_email_verification_verified
فلتر نتيجة التحقق من البريد الإلكتروني عندما تكون صحيحة.
مثال
إرجاع نتيجة تحقق خاطئة دائمًا إذا كان بريد المستخدم الإلكتروني ليس ضمن نطاق discourse.org.
function wpdc_custom_email_verification_verified( $verified, $user_id ) {
$user_info = get_userdata( $user_id );
return strpos( $user_info->user_email, 'discourse.org' ) !== false || false;
}
add_filter( 'wpdc_email_verification_verified', 'wpdc_custom_email_verification_verified`, 10, 2 );
wpdc_sso_avatar_url
تعيين عنوان URL للصورة الرمزية للمستخدم على Discourse عند تسجيل الدخول باستخدام DiscourseConnect.
مثال
wpdc_sso_params
تغيير معلمات DiscourseConnect المرسلة عند تسجيل دخول المستخدم.
مثال
wpdc_bypass_sync_sso
منع مزامنة حساب ووردبريس للمستخدم مع حسابه في Discourse.
مثال
wp_new_user_notification_email_admin
فلتر محتوى البريد الإلكتروني لإشعار المستخدم الجديد المرسل إلى مدير الموقع.
مثال
function wp_custom_new_user_notification_email_admin( $email_opts, $user, $blogname ) {
## تعديل البريد الإلكتروني قبل إرساله إلى المدير.
}
add_filter( 'wp_new_user_notification_email_admin', 'wp_custom_new_user_notification_email_admin', 10, 2 );
wp_new_user_notification_email
فلتر محتوى البريد الإلكتروني لإشعار المستخدم الجديد المرسل إلى المستخدم الجديد.
مثال
function wp_custom_new_user_notification_email( $email_opts, $user, $blogname ) {
## تعديل البريد الإلكتروني قبل إرساله إلى المستخدم.
}
add_filter( 'wp_new_user_notification_email', 'wp_custom_new_user_notification_email', 10, 2 );
عميل DiscourseConnect
فلاتر عميل DiscourseConnect الخاص بـ WP Discourse.
wpdc_sso_client_add_link_buttons_on_profile
تحديد ما إذا كان يجب إظهار زر رابط حساب Discourse على ملفات المستخدمين في ووردبريس.
مثال
function wpdc_dont_add_account_link_button( $add_button ) {
return false;
}
add_filter( 'wpdc_sso_client_add_link_buttons_on_profile', 'wpdc_dont_add_account_link_button' );
wpdc_sso_client_updated_user
فلتر بيانات المستخدم في Discourse قبل تحديث مستخدم ووردبريس.
مثال
التأكد من أن الحرف الأول في اسم المستخدم مكتوب بحرف كبير.
function wpdc_ensure_capitalisation( $updated_user, $query ) {
$updated_user['name'] = ucfirst( $updated_user['name'] );
return $updated_user;
}
add_filter( 'wpdc_sso_client_updated_user', 'wpdc_dont_update_admin_users' );
wpdc_sso_client_redirect_after_login
فلتر return_sso_url المستخدم لإعادة توجيه المستخدم بعد تسجيل الدخول بنجاح.
مثال
إعادة توجيه المستخدمين دائمًا إلى “لوحة التحكم” بعد تسجيل الدخول بنجاح.
function wpdc_always_redirect_to_dashboard( $return_sso_url ) {
return "/dashboard";
}
add_filter( 'wpdc_sso_client_redirect_after_login', 'wpdc_always_redirect_to_dashboard' );
wpdc_sso_client_redirect_after_failed_login
فلتر login_url المستخدم لإعادة توجيه المستخدم بعد فشل تسجيل الدخول.
مثال
إعادة توجيه المستخدمين دائمًا إلى صفحة “المساعدة” بعد فشل تسجيل الدخول.
function wpdc_always_redirect_to_help( $redirect_url ) {
return "/help";
}
add_filter('wpdc_sso_client_redirect_after_failed_login', 'wpdc_always_redirect_to_help');
wpdc_nonce_life
تعيين مهلة nonce. الافتراضي هو 10 دقائق.
مثال
تعيين مهلة nonce إلى 5 دقائق.
function wpdc_custom_nonce_life( $nonce_timeout ) {
return 5;
}
add_filter( 'wpdc_nonce_life', 'wpdc_custom_nonce_life' );
wpdc_sso_client_login_anchor
تغيير النص المعروض على رابط تسجيل الدخول إلى Discourse المعروض في نموذج تسجيل الدخول في ووردبريس.
مثال
تغيير النص إلى “سجل الدخول باستخدام حساب المنتدى الخاص بك”.
function wpdc_custom_sso_client_login_anchor ( $login_text ) {
return "Login with your forum account";
}
add_filter( 'wpdc_sso_client_login_anchor', 'wpdc_custom_sso_client_login_anchor' );
wpdc_sso_client_login_button
تغيير رابط تسجيل الدخول إلى Discourse المعروض في نموذج تسجيل الدخول في ووردبريس.
مثال
تغيير عنصر الرابط (إضافة فئات وسمات العنوان).
function wpdc_custom_sso_client_login_button( $button, $sso_login_url, $link_options ) {
return sprintf( '<a class="wpdc-sso-client-login-link" href="%s" class="discourse-login-link" title="%s">%s</a>', esc_url( $sso_login_url ), sanitize_text_field( "Click to login with Discourse" ), sanitize_text_field( "Login with Discourse" ) );
}
add_filter( 'wpdc_sso_client_login_button', 'wpdc_custom_sso_client_login_button', 10, 3 );
wpdc_sso_client_query
إضافة سلسلة عشوائية إلى الاستعلام الذي يبدأ DiscourseConnect للتعامل مع مشاكل التخزين المؤقت للصفحة.
مثال
wpdc_sso_client_redirect_url
فلتر عنوان URL لإعادة التوجيه المستخدم بعد تسجيل الدخول.
مثال
إعادة توجيه المستخدمين إلى لوحة التحكم بعد تسجيل الدخول.
function wpdc_custom_sso_client_redirect_url( $encoded_url, $unencoded_url ) {
return "/dashboard";
}
add_filter( 'wpdc_sso_client_redirect_url', 'wpdc_custom_sso_client_redirect_url', 10, 2);
الويب هوك
فلاتر الويب هوك لـ WP Discourse.
wpdc_webhook_get_page_by_title_post_type
تغيير نوع المنشور المستخدم لمطابقة منشورات ووردبريس ومنشورات Discourse. الافتراضي هو “post”.
function wpdc_match_custom_posts( $post_type ) {
return 'custom_post_type';
}
add_filter( 'wpdc_webhook_get_page_by_title_post_type', 'wpdc_match_custom_posts' );
wpdc_use_discourse_user_webhook
تحديد ما إذا كان يجب استخدام الويب هوك الخاص بمستخدم Discourse.
مثال
الأدوات
فلاتر يمكنك استخدامها مع أدوات WP Discourse.
wpdc_auto_create_user_require_activation
تحديد متى يتطلب مستخدم تم إنشاؤه بواسطة الأداة create_discourse_user تفعيلًا.
مثال
الإجراءات
لشرح عام حول كيفية استخدام الإجراءات في ووردبريس، راجع:
الإعدادات
إجراءات إعدادات WP Discourse.
wpdc_options_page_append_settings_tabs
يمكن استخدامها لإضافة تبويبات فرعية إلى تبويبات إعدادات WP Discourse.
مثال
function my_wp_discourse_setting_tab( $tab, $parent ) {
## أضف التبويب الخاص بك.
}
add_action('wpdc_options_page_append_settings_tabs', 'my_wp_discourse_setting_tab', 10, 2);
wpdc_options_page_after_settings_tabs
يتم استدعاؤها بعد تبويبات الإعدادات.
مثال
function my_custom_wpdc_tab( $tab, $parent ) {
## قم بتشغيل كود التبويب المخصص الخاص بك.
}
add_action( 'wpdc_options_page_after_settings_tabs', 'my_custom_wpdc_tab', 10, 2 );
wpdc_options_page_after_tab_switch
يتم استدعاؤها بعد تبديل تبويب WP Discourse.
مثال
function my_custom_wpdc_tab_switch( $tab ) {
## قم بتشغيل الكود المخصص الخاص بك بعد تبديل التبويب
}
add_action( 'wpdc_options_page_after_tab_switch', 'my_custom_wpdc_tab_switch' );
wpdc_options_page_after_form
يتم استدعاؤها بعد عرض نموذج إعدادات WP Discourse.
مثال
function my_custom_wpdc_options_page_after_form( $tab ) {
## قم بتشغيل الكود المخصص الخاص بك بعد عرض الإعدادات.
}
add_action( 'wpdc_options_page_after_form', 'my_custom_wpdc_options_page_after_form' );
التعليقات
إجراءات تعليقات WP Discourse.
wp_discourse_after_comments
التشغيل بعد مزامنة التعليقات.
مثال
function my_custom_comment_handling( $topic_id ) {
## قم بتشغيل الكود المخصص الخاص بك بعد مزامنة التعليقات.
}
add_action( 'wp_discourse_after_comments', 'my_custom_comment_handling' );
مزود DiscourseConnect
إجراءات مزود DiscourseConnect الخاص بـ WP Discourse.
wpdc_after_sync_sso
التشغيل بعد مزامنة المستخدم عبر DiscourseConnect.
مثال
wpdc_sso_provider_before_create_user
التشغيل قبل إنشاء مستخدم Discourse.
مثال
function my_custom_user_handling( $user_login, $user ) {
## قم بتشغيل الكود المخصص الخاص بك قبل إنشاء المستخدم
}
add_action( 'wpdc_sso_provider_before_create_user', 'my_custom_user_handling', 10, 2 );
wpdc_sso_before_login_redirect
التشغيل قبل إعادة توجيه المستخدم إلى تسجيل الدخول في ووردبريس.
مثال
function my_custom_login_handling( $user_login, $user ) {
## قم بتشغيل الكود المخصص الخاص بك قبل إعادة توجيه المستخدم لتسجيل الدخول.
}
add_action( 'wpdc_sso_before_login_redirect', 'my_custom_login_handling', 10, 2 );
wpdc_sso_provider_before_sso_redirect
التشغيل قبل إعادة توجيه المستخدم إلى Discourse بعد تسجيل الدخول في ووردبريس.
مثال
عميل DiscourseConnect
إجراءات عميل DiscourseConnect الخاص بـ WP Discourse.
wpdc_sso_client_after_login_link
التشغيل بعد عرض رابط تسجيل الدخول إلى Discourse.
مثال
function my_custom_login_html() {
## أضف HTML المخصص الخاص بك
}
add_action( 'wpdc_sso_client_after_login_link', 'my_custom_login_html' );
wpdc_sso_client_after_create_user
التشغيل بعد إنشاء مستخدم ووردبريس.
مثال
function wpdc_modify_wordpress_user( $user_id ) {
## قم بتعديل مستخدم ووردبريس.
}
add_action( 'wpdc_sso_client_after_create_user', 'wpdc_modify_wordpress_user' );
wpdc_after_sso_client_user_update
التشغيل بعد تحديث مستخدم ووردبريس.
مثال
function wpdc_modify_wordpress_user_after_update( $user_id, $query ) {
## قم بتعديل مستخدم ووردبريس.
}
add_action( 'wpdc_after_sso_client_user_update', 'wpdc_modify_wordpress_user_after_update' );
الويب هوك
إجراءات الويب هوك لـ WP Discourse.
wpdc_before_webhook_post_update
التشغيل قبل معالجة بيانات الويب هوك لتحديث الموضوع المستلمة من Discourse.
مثال
function wpdc_before_webhook_post_update_changes( $json ) {
## استخدم JSON المستلم من Discourse.
}
add_action( 'wpdc_before_webhook_post_update', 'wpdc_modify_wordpress_user_after_update' );
wpdc_webhook_after_get_page_by_title
التشغيل بعد مطابقة المنشورات بالعنوان لويب هوك تحديث الموضوع.
مثال
function wpdc_webhook_custom_after_get_page_by_title( $title ) {
## افعل شيئًا مع العنوان المطابق.
}
add_action( 'wpdc_webhook_after_get_page_by_title', 'wpdc_webhook_custom_after_get_page_by_title' );
wpdc_webhook_user_created
التشغيل بعد إنشاء مستخدم بواسطة ويب هوك تحديث المستخدم.
مثال
function wpdc_webhook_user_created_action( $discourse_user ) {
## افعل شيئًا مع مستخدم Discourse.
}
add_action( 'wpdc_webhook_user_created', 'wpdc_webhook_user_created_action' );
wpdc_webhook_user_updated
التشغيل بعد تحديث مستخدم بواسطة ويب هوك تحديث المستخدم.
مثال
function wpdc_webhook_user_updated_action( $discourse_user ) {
## افعل شيئًا مع مستخدم Discourse.
}
add_action( 'wpdc_webhook_user_updated', 'wpdc_webhook_user_updated_action' );
wpdc_webhook_before_update_user_data
التشغيل قبل تحديث بيانات مستخدم ووردبريس من بيانات مستخدم Discourse بواسطة ويب هوك تحديث المستخدم.
مثال
function wpdc_webhook_before_update_user_data_action( $wordpress_user, $discourse_user, $event_type ) {
## افعل شيئًا مع مستخدم ووردبريس أو مستخدم Discourse.
}
add_action( 'wpdc_webhook_before_update_user_data', 'wpdc_webhook_before_update_user_data_action' );