ذات صلة: # 594
في # 594 ، عندما تنتهي مسودة المنشور من الحفظ ، نقوم بضبط عنوان URL للمتصفح الحالي ليعكس معرف المنشور الجديد. على الرغم من أن هذا ضروري في سياق شاشة المحرر المخصص ، إلا أن هذا يقلل من إمكانية نقل المحرر لأن تغييرات عنوان URL هذه غير قابلة للتطبيق خارج هذا السياق. إذا كنا نرغب في السماح بتهيئة محرر على شاشات أخرى (على سبيل المثال ، الواجهة الأمامية ، Customizer) ، فقد نحتاج إلى استكشاف خيارات لإدخال البرامج الوسيطة الخاصة بالسياق. يمكن أن يكون هذا بمثابة نمط التمدد العام لأي آثار جانبية لتغيرات الحالة.
بالنسبة إلى مثال التنقل الذي تم حفظه في المنشور ، قد يبدو هذا مشابهًا لما يلي:
wp.editor.injectMiddleware( ( store ) => ( next ) => ( action ) => {
const { type, isNew, post } = action;
if ( 'REQUEST_POST_UPDATE_SUCCESS' === type ) {
const [ baseUrl, query ] = window.location.href.split( '?' );
const qs = parse( query || '' );
const newUrl = baseUrl + '?' + stringify( {
...qs,
post_id: newPost.id,
} );
window.history.replaceState( {}, 'Post ' + newPost.id, newUrl );
}
return next( action );
} );
أنظر أيضا:
middleware
)تحقق من لوحة تلقائية / إخطارات وكيف نقوم بذلك للتكامل مع automattic / wp-calypso
الإجراءات الافتراضية لوضع iframe
بالمناسبة ، كان يعمل بشكل جيد للغاية
مرت 8 أشهر وما زلنا في حاجة إليها 😃 كان لدينا إعادة هيكلة كبيرة في الطريقة التي نتعامل بها مع البيانات ، لكن الأدوات الوسيطة لا تزال تلعب دورًا مهمًا. يمكننا استكشاف ما إذا كانت مكتبة الخطافات ستكون مناسبة هنا. قد نقوم بحقن أدوات وسيطة إضافية باستخدام عوامل التصفية هنا: https://github.com/WordPress/gutenberg/blob/master/editor/store/middlewares.js#L40. اقترح youknowriad إنشاء واجهة برمجة تطبيقات داخلية للبدء.
تم استبدال هذا بالأنماط الجديدة مع وحدة البيانات: لا سيما واجهات برمجة التطبيقات subscribe
و withSelect
، والتي تسمح للمطور بمراقبة التغييرات والتفاعل معها بمرور الوقت: https://github.com/WordPress /gutenberg/blob/master/packages/data/README.md
التعليق الأكثر فائدة
تحقق من لوحة تلقائية / إخطارات وكيف نقوم بذلك للتكامل مع automattic / wp-calypso
حقن المعززات
الإجراءات الافتراضية لوضع iframe
عمليات تكامل مخصصة في كاليبسو
بالمناسبة ، كان يعمل بشكل جيد للغاية