أفكر في إنهاء وورد بريس !

فكرت كثيرا قبل كتابة العنوان ... فهو يحزنني فكثير من المطورين يعتمدوا على وورد بريس وإنهاؤه يعني مرحله جديده من التعلم

قبل كل شيء ... هل يمكن حقا الصعود فوق ووردبريس ؟ وماهي الفترة المحتمله ؟

الإجابه واضحه ... طبعا يمكن فالحياه دول ويوما ما سيسقط , أما المدة المتوقعه فأعتقد سنتين لا أكثر .

لماذا ؟

قبل ست سنوات كتبت مقال في منتديات الفريق العربي عن فكرة إنشاء نظام إدارة محتوى به مميزات أكثر من وورد بريس ولكن تفاجأت بغضب واسع وتحطيم عزائم من قبل مطورين معروفين عربيا وبعظهم قال لماذا لا تقم بعمل إضافات لووردبريس ولماذا لا تطور على ووردبريس ... ووردبريس ...ووردبريس

فبدأت في إعطاء دورة حول كيفية تصميم موقع من الصفر ثم بدأت بتطوير أدوات إلى أن قمت بإنشاء نظام محتوى متكامل ولله الحمد

حاولت مرارا وتكرارا إطلاق النظام للعالم ولكني لم أنجح وذلك بسبب عنصرية المطورين - كما كنت أظن , ولكني إكتشفت أن المطورين هم بالأصل ليسوا مطورين وإنما مركبين أو منصبين فقط يقوم بأخذ قالب جاهز وإضافات جاهزه ويحملها على ووردبريس وعندما تطلب منه تغيير بسيط جدا في أي قالب أو إضافة فإنه يقف عاجزا وكأن الأرض ضاقت بما رحبت , لدرجة أنني إكتشفت أن أسماء رنانه في ووردبريس هي منصّبه أو مركّبه , حزنت كثيرا على حالهم وبدأت في التعامل مع ووردبريس لأرى مايقدمه فقد عملت نظام إدارة المحتوى الخاص بي بدون أن أتعامل مع أي نظام آخر مثل ووردبريس او جوملا أو دروبال والسبب هو قناعتي بأن الأفكار ستتأثر في أي نظام إدارة محتوى سأتعامل معه لذلك جميع الأفكار في النظام الذي أنشأته هي أفكاري ...

ماذا لاحظت عند تعاملي مع ووردبريس ؟

أول شيء لاحظته هو عدم فصل الكود , ووردبريس يتعمد إبقاء المطور في فوضى ! أنظر إلى قوالب ووردبريس تجد كود بي أتش بي مع html مع جافاسكريبت مع ستايل وكأنني أعود إلى زمن لا يوجد فيه MVC توقعت على الأقل أنه يستخدم سمارتي للقوالب .

بعد ذلك تفاجأت بأن هناك توافق قريب جدا من النظام الخاص بي من ناحية الإضافات والقوالب ولكني أتفوق عليه بأفكار جديده غير متوفره في ووردبريس ولا أعتقد أنها متوفره في أي نظام آخر , لا أريد ذكرها الآن وسأبقى في السياق

كيف سأتفوق على ووردبريس ؟

فكرت كثيرا بالإجابة ... الإجابة صعبه وتحتاج إلى وقت للتنفيذ

بما أن عدد مستخدمي ووردبريس كبير جدا , فقجب ان أفكر في إمكانيه عمل أداة تحويل موقع ووردبريس إلى نظام الإدارة الخاص بي ! هذا يتطلب فهم كامل لجميع التقنيات والكود الخاصه بووردبريس وإعادة بنائها لتتلاءم مع نظامي , التصميم .. الهيكله .. قواعد البيانات .. إلخ ...

إذا قمت بتوفير الأداة هذا يعني جميع تصاميم ووردبريس وإضافاتها ستعمل بنجاح على نظام ادارة المحتوى الخاص بي , لم أبدأ بالعمل بعد فأنا مشغول هذه الفترة ولكن سؤال للمتخصصين في تطوير الإضافات والقوالب لووردبريس (إن وجد) .... هل هذا ممكن ؟ وما رأيك في المقال :)

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

21

لا أريد حقا أن أبدو كذلك الشخص المكروه الذي يقول لك أنك لا تستطيع فعل هذا ببساطة، فسيأتي الكثيرون من بعدي ويقولون كم أنا غبي ولا أفهم. لكن المشكلة هي، أنك ببساطة لا تستطيع حاليا ولابد سنتين، وسأشرح لك لماذا

أولا ووردبريس لم يتم بناءها في ليلة وضحاها، ووردبريس عمرها 10 سنوات، وعدد العاملين فيها كبير.

طبعا، ظهرت العديد من أنظمت إدارة المحتوى بعد ووردبريس ومعظمها غير معروف والآن معروف. ولكن جلها تشترك في نقطة واحد، وهي أنهم مختلفون عن ووردبريس

أنا حقا أكره حكمك على كامل مطوري وصمممي ووردبريس في العالم العربي لأنك تعاملت مع بضعت أشخاص في منتدى ما

مجددا، أنت تحكم على ووردبريس من خلال نظرك لقالب عشوائي حتى ترضي غليلك فحسب

نعم أنا معك، ووردبريس لا تدعم MVC ، ولكن السؤال هو، هل يجب عليها أن تدعمه حقا؟

ووردبريس مبنية على نظام الأحداث، فتقريبا أنت تصنع كل الدوال وما إلى ذلك ثم تقوم بربطها بحدث معين في ووردبريس، لذلك هذا البناء لا يساعد

ثم أيضا، تستطيع ابقاء الكود نظيفا دوما بحيث تضع كل شيء على شكل دوال فحسب، هذا ما أقوم به أنا

أكتب الدوال فحسب ثم في ملف functions أقوم ببرمجتها وإعداده

أنصحك أن تقرأ هذا المقال لتفهم لماذا ووردبريس لا تدعم MVC ولا يجب عليها دعمه

سبب آخر في عدم استخدام MVC سيكون التوافق، فاستخدامه يعني تغيير جذريا في الكود، هل تفهم ماذا يعني هذا؟

هذا يعني أن اي شخص يستخدم قالب ووردبريس أو إضافة له، لن تعمل بعد التحديث هذا ان على العالم كاملا أن يغير الكود الخاص به ويصلحه وهذا ببساطة غير ممكن

لكن إذا أردت التوفق على ووردبريس فالكلام وحده لا يكفي، لا تتوقع ان تقول (ساتفوق على ووردبريس في غضون سنتين) وأنت لا تملك حتى فكرة على كيفية عمل ووردبريس، ثم أقولها مجددا، لا تحكم على شيء وانت تعاملت معه لبضع دقائق أو حصلت على كود سيء من شخص ما لا يمثل ووردبريس

فكأنك شاهدت فلما سيئا ثم تقول أن هوليوود كلها سيئة ولا تعرف الأفلام وأنك ستبني (عربي وود)

أيضا أنا كمطور أتوقع بضع أشياء أساسية من برنامج حتى أستعمله ألا وهي:

اتوقع ان اجد على الأقل 5 من الإضافات التالية كإصدار أولي

Dashboard Widgets API

Database API

HTTP API

File Header API

Filesystem API

Metadata API

Options API

Plugin API

Quicktags API

Rewrite API

Settings API

Shortcode API

Theme Modification API

Theme Customization API

Transients API

Widgets API

أتوقع أن أجد توثيقا ممتازا (كتابة وليس فيديو)

أتوقع أن اجد على الأقل 100 دالة مختلفة كمرحلة أساسية للعمل

أتوقع أن أجد على الأقل 50 حدث لأربط به دوالي مباشرة (action hooks)

أتوقع أن اجد سهولة كبيرة في التعديل على طريقة عمل النظام من القالب او الإضافة وليس من المحتوى (action filters)

أتوقع أن أجد هندسة ممتازة لقاعدة البيانات وان لا استعمل sql اطلاقا، بل توجد دوال تقوم بهذا بالنيابة عني

بالنسبة لسؤالك الأخير، هل هذا ممكن؟

طبعا ممكن، ولكن تذكر عليك أن تفهم ووردبريس حتى النخاع أولا، ثم توافق كل

الة منها على الكود الخاص بك (وهناك الكثير، ربما 1000، حظا موفقا في دعمهم كلهم)

عليك أن توافق كل الأحداث والفلاتر (hooks & filters هناك بالمئات، حظا موفقا أيضا)

واتوقع كل شيء ان يعمل بسلالسة

بالمناسبة في بداية المقال، عندما قرأت العنوان انتابني شعور فجأة وهو أن اخالفك الرأي مهما كان الأمر. ولكن فكرت جيدا، ثم عدلت عن قراري وحاولت وزن الأمور بشكل جيد، ردي في الفوق حيادي (على الأقل هذا ما أظنه انا) ولا ينحاز لووردبريس بل يخبرك الحقيقة التي لم ترها انت بسبب تعاملك مع المبرمجين

وأكثر شيء أزعجني وأغضبني في المقال هو حكمك المسبق، أنت تذكري بشخص هنا تعامل مع بضع مبرمجين من بلد واحد فحكم على كامل البلد. أنت قابلت مطورا ما لا أحد يعرفه في منتدى منسي ثم قلت (هذا المطور سيء، لابد أن الملايين الباقيين مثله تماما) لذا التفكير جيدا قبل كتابتك للأحكام المسبقة

أولا أشكر ردك المليء بالفوائد , فهذا يدل على شخص متمكن مما يتحدث عنه , أعتذر إن أغضبتك فقد تعمدت استفزاز المطورين حتى أرى الردود الفعاله

بما أنك متمكن من ووردبريس , هل لي بسؤالك عن أهمية الأحداث والفلاتر ؟ إن كان بالإمكان إستخدام classes جاهزه يمكن إضافتها بسهوله في النظام .. أو حتى عمل مكتبه لها ؟

لم أفهم ماهي الأحداث والفلاتر حتى الآن ولكني بالتأكيد عن البدء في العمل سأفهم كل شيء عن وورد بريس , أما بالنسبه للكود فلم أنظر لقوالب خارجيه لأنني في البداية نظرت إلى كود قالب خارجي وعندما رأيت لخبطة الكود ضننت أنها من الشركة المصنعه للقالب فقمت بتنزيل ووردبريس ونظرت لكود القالب الرئيسي في ووردبريس ثم بدأت بتصفح الكود كامل بشكل سريع لكي لا أخطئ حينما أقول أنهم لا يستخدمون MVC ولم أقرأ عن ذلك حتى , جميل ان أقرا ولكني أفهم أكثر بقراءة الكود :)

من ناحية نظام إدارة المحتوى الذي قمت بإنشائه بغض النظر عن كثير من الأمور التي يراها المدير أو المحرر , فهناك أيضا الكثير من التقنيات التي قمت بإنشائها بفضل الله منها بشكل مختصر

1- الترجمه , نظام يسمح بترجمة أي جمله من خلال ملفات ترجمة ويمكن إضافة أكثر من لغه فقط بإضافة ملف الترجمة مدعوم بخصائص مثل من اليمين إلى اليسار وإسم اللغه والأيقونه

2- ملفات الجافاسكريبت , يتم دمجها معا وضغطها ويمكنك إضافة أي ملف في مجلد الجافاسكريبت ليتم التعرف عليه أوتوماتيكيا ودمجه مع الملفات السابقة كما يمكنك تحديد ملفات لاتريد دمجها وإنما إظهارها في صفحات معينه

3- ملفات الستايل .. نظام ذكي يتعرف على الصور بدون الحاجه لكتابة باث الصورة في الستايل وإنما فقط إسم الصورة كما يقوم بدمج جميع ملفات الستايل بالترتيب الذي تريده وضغطها مع إمكانيه إضافة ستايل لصفحة معينه

4- قواعد البيانات , هناك نظام قمت بإبتكاره يعمل على تكييش نتائج الإستعلام لمدة تختارها أنت كما يمكنك عمل متنصت يعمل على حذف الكاش كل عمليه معينه , وجميع ملفات الكاس في مجلد يسمى كاش بحيث يمكنك حذف جميع الملفات في أي وقت بدون مشاكل

5- نظام الكاش , تم إنشاء هذا النظام مع صلاحيات وجميع النقاط السابقة كذلك , صلاحيات للمدير والمشرف والمسجل والزائر , بحيث يكون الكاش للزائر مختلف عن كاش المشرف لأن كثير من الصفحات تكون دايناميكيه أكثر في حال التسجيل , ويمكنك تحديد وقت الكاش لكل جزء في الموقع وليس لكل صفحة أو إضافة , وهذا مالم ألاحظه في ووردبريس ... فمثلا إضافة الكاليندر يمكنك وضعها في جانب x وتكون صلاحية المشاهدة أو الظهور للمشرفين وتظهر في الصفحات a,b,c ويكون الكاش html or template مدته 10 دقائق وكاش سيكول 5 دقائق وتظهر بطريقة أجاكس أي بعد تحميل الصفحة يتم تحميل هذا الجزء كما ان لكل جزء رابط يمكن تصفحه منفصلا عن الموقع وبذلك يمكنك إستخدام الأجاكس او طباعه الإضافة أو وضعها في موقع آخر بكل سهوله

6- نظام للتحكم في الستايل تم الإشارة إليه في موضوع سابق

7- نظام مفسر للقوالب بحيث يمكنك عرض نتائج أي كود بي أتش بي في القوالب بدون كتابة كود بي أتش بي , وهذا النظام يمكن إنشاء إضافات له وهنا بعض الأوامر

  [SQL:"pages_sql","Select * From table1 where md5='phones'","[session_var:"count_nu"end session_var]
            %pages_sql:string1%
  "end SQL]

يمكنك عمل أمر [print:""end print[

مثلا

هل هذا جيد ؟ أقصد مشجع للإستمرار ؟

15

مرحبا،

بالنسبة لسؤالك حول الفلاتر والأحداث (Filters and action) فهو بالتحديد خطاطيف تحدث داخل النظام فتتفاعل معها الدوال،

فالأحداث مثلا (action) تتصل بالنظام في حدث معين، فلنقل أنّ ووردبريس بشكل افتراضي يظهر كلمة مرحبا عندما يسجل المستخدم الدخول، لاحظ أنّ الحدث هنا هو تسجيل الدخول،

وأنت كمطور إضافات أو قوالب تريد أن تحول المستخدم إلى مكان آخر عند تسجيله الدخول، أو تريد تنفيذ دالة معينة عند ذلك، فستقوم بربط هذه الدالة بذلك الحدث بالشكل التالي

add_action( action_name', 'function name' );

حيث action name هو اسم الحدث، وfunction name هو اسم دالتك التي كتبتها أنت مسبقا وتريد تنفيذها، لذا كل شيء سيحصل بشكل منظم ولن يختلط الكود، ولن يكون أنت عليك (كمطور قالب أو إضافة) التعديل على النواة إطلاقا فهذا هو الهدف من ووردبريس، عدم لمس النواة إطلاقا، والتحكم بكل شيء عبر الأحداث والفلاتر، مثال آخر سيكون بالقيام بشيء عندما يسجل عضو ما، فلنقل مثلا أنك تريد أن ترسل لنفسك رسالة الكترونية كلما نشر أحد المدونين مقالا جديدا، فتستطيع كتابة دالة ترسل رسالة لك، ثم تربطها مع الحدث المناسب (والذي سيكون نشر مقال جديد، وكلها مبنية مع النظام) أما بالنسبة للفلتر (filter) فهو كما يبدو من اسمه، يفلتر شيئا ما، بمعنا يعالج قبل ظهوره. مفهومه يقتصر على تعديل الشيء قبل وصول للمستخدم، أو طباعته على الشاشة، أو دخوله لقاعدة البيانات. كمثال فلنقل أنك في صفحة تسجيل الدخول، لديك كلمة مرحبا، وأنت تريد تغييرها إلى "أهلا وسهلا"، فبدل المساس بالنواة، عليك فقط كتابة دالة وتحديد متغير لها (parameters) والذي سيكون الشيء الذي تريد تغييره ، ثم تقوم بتغييره وإرجاعه وتمرره للمفلتر والذي سيتولى الأمر من هناك، هذا مثال

function function_name ($text) {
    $text = 'hello world';
    return $text;
}

add_filter('filter_name','function_name');

يوجد العديد من الأحداث المشابهة ويوجد شرح لكل واحدة (ليس 100% ولكن عدد قليل جدا جدا غير موثق، وهو الأقل استعمالا)

قد يكون شرحي ركيكا وسيئا بعض الشيء حيث أنّ هذه الأمور تتطلب مقالة مفصلة

تستطيع قراءة هذه المقالة لتفهمهم بشكل جيد (المقالة مخصصة للمبتدئين، فلذا أنك أنك ستفهما حتى ولو أنك لم تتعامل مع ووردبريس)

بالنسبة للنقاط التي ذكرتها، ووردبريس يدعم الترجمة بشكل جيد تماما، وهذا عبر مجموعة من الدوال التي تمرر لها أنت النص وعنوان القالب أو الإضافة (text domain) ويستطيع الشخص الترجمة باستخدام ملفات po و mo عبر أيّ محرر لهم __ (لتمرير نص للترجمة) _x (لتمرير نص للترجمة، مع عبارة تشرح مفاده للمترجم) _n (لتمرير نص للطباعة ولكن بصيغة الجمع و المفرد) _nx (نفس عمل الدالتين السابقتين مجتمعتين) _e (لتمرير نص وطباعته) _ex (نفس عمل x_ ولكنها تقوم بالطباعة) esc_attr__ (تقوم بتحويل عبارة ما وتمررها للترجمة، مثلا تقوم بتحويل > و < إلى مقابله في html وهي أحسن بكثير من htmlentities و htmlspecialchars ) esc_attr_e (نفس عمل السابقة، ولكنها تقوم بطباعتها)

2 و 3 أراها ربما مكملات وليس أساسيات في عمل النظام، وأيضا هناك إضافات لتقوم بالأمر

4 و 5 لست ضليعا في الأمور فلا أستطيع أن أحكم، ولكن يوجد إضافات ووردبريس لتقوم بهذا مثل (W3 total cache, WP Super cache)

6 فكرة الستايل فكرة جميلة حقا، وأنا أشجعك عليها، ولكن يلزم العمل عليها كما قلت، وتحتاج لمصمم إلى جانبك ليحسن تجربة الاستخدام فيها

7 لم أفهم ما تقصده حقا، ولكن يبدو لي الكود معقدا وأنك تستخدم SQL مباشرة، في ووردبريس يوجد كلاس WP_Query لتحسين الأمر ويوجد دوال لاختيار ما تريد سحبه، وهي تنظم الأمر بدلا منك، بهذه الطريقة $the_query = new WP_Query( $args );

ثم تقوم بكتابة loop لاحقا انطلاقا من الكلاس الجديد وفي $args تقوم بتحديد الأوامر التي تريد سحبها، مثلا إذا أنت تقوم بسحب المعلومات من قاعدة البيانات مباشرة باستخدام sql هكذا

Select * From table1 where...

تستطيع فيه تحديد ما تريده، مثلا تريد سحب تدوينات عضو ما، وليك Id الخاص به 5 فتقوم بالتالي

 $the_query = new WP_Query('author=5');
//أو تريد السحب باستخدام اسمه وليس المعرف الخاص به
$the_query = new WP_Query('author_name=nadir');
// أو تريد سحب تدوينات من تصنيف معين، مثلا تصنيف design
$the_query = new WP_Query('category_name=design');

طبعا يوجد الكثير من الخيارات، بالتحديد حوالي 50 خيار مختلف، مثل جلب تدوينات نشرت في وقت محدد، وتدوينات نشرت قبل وقت محدد، وعدد التدوينات، وتدوينات تريد اقصاءها، ستجد كل شيء هنا

في النهاية أنا أتكلم من وجهة نظر مطور (سوقك الثانية) وأنت تتكلم من جهة صاحب المنتج، وطبعا ستحتاج رأي مستخدم (سوقك الأولى) لذا آراءنا قد تختلف

حاول أن لا تنسى المطور وتركز على المستخدم، فإنتاجك لنظام إدارة محتوى لا يوجد مطور خاص سيقبل العمل به، أو لا يوجد قوالب وإضافات له فلن يأخذه أيّ عميل إلا إذا أراد أخذه كما هو وعدم تخصيصه

ونصيحة حقيقة لك، أنت تملك فكرة جميلة، ومتأكد من أنك تملك القدرة لتحقيق ما تريده. ولكن بدل التركيز على منافسة ووردبريس اختر لك سوقا آخر، لا أقصد أن تترك العمل على الشيء الذي تقوم به بل أن تركز على مالا يملك ووردبريس، فكرة الستايل السريع فكرة ممتازة، حاول العمل عليها وطورها أكثر (هذا النوع من التصميم سيكون المستقبل، انظر إلى Macaw مثلا)

بالتوفيق

أبدعت أخي بالرد ... جزاك الله خير

طبعا لا يمكنني وضع ووردبريس كمنافس ... ربما تكون نكته للكثير من المطورين , ولكن الأمل يبقى والتجارب دلت على إمكانيه الصعود كما صعدت جووجل على ياهوو وفيسبوك على هاي فايف والكثير من الأمثله ... مع ذلك كما قلت أنت "بدل التركيز على منافسة ووردبريس اختر لك سوقا آخر" وورد بريس ظهر كنظام تدوين وما لبث إلا أن أصبح نظام لإنتاج مواقع لسهوله التطوير , منذ البداية كان تركيزي على المطور ثم بعد التجربة إلتفت إلى المصمم وأنشأت نظام التصميم أخيرا عند تنفيذ عدة مواقع لاحظت المستخدم يصعب عليه عمل الكثير فطورت له أدوات لكتابة المحتوى لذلك نظام إدارة المحتوى الذي لدي جيد للجميع ولكنه يحتاج إلى توثيق لكل الأطراف أقصد للمطور والمصمم والمستخدم ... سأقوم بتوفير موقع تجريبي وأدعوكم لتجربة المجله ولك أخي تخصيص لأني أفكر في إطلاعك على الكود في حال أردت ذلك ... ربما تستفيد وتفيدني وأتمكن من إطلاق نسخه مفتوحة المصدر قريبا بمساعدتك .

لست خبير في وورد بريس لكن بعد ان قرأت موضوعك وجدت فيك استهانة واستحقار لبرنامج هو من أقوى البرامج وهناك احصائيات تشير إلى أن ثلث مستخدمين الويب قاموا بتركيب وورد بريس ولهذا يعتبر الاكثر استخدام في العالم فمعظم المواقع سواء الشخصية او لشركات ناشئة أو مواقع شركات قائمة تستخدمه.

اتفق مع ما قاله assassinateur وكنت افضل ان عرضت برنامج بدون ذكر منافسة لأي برنامج آخر سيكون ذلك أكثر قبول ولا تعرف قد تنجح أفكارك وتكون افضل من وورد بريس لكن بما انك ذكرت وورد بريس واعتبرته منافس وقللت من شأنه كمنافس لا يستحق فعلياً المنافسة جعل الآخرين غير متقبلين للفكرة وما تحاول ان تعرضه من مزايا أفضل كما تقول.

لا أود أن أحكم مسبقا على نظام لم أره، لذا الأفضل طرح مثال له لأتمكن من المقارنة.

سيتم طرح مثال أرجو متابعه مجموعه المجله على الرابط