في أحد المواقع وجدت سؤالا عن إمكانية منع نشر موضوع بدون محتوى أي العنوان فقط, وبعد البحث لم أجد غير هوك يقوم بمنع النشر إذا كان العنوان غير موجود أو تحديد عدد أحرف العنوان, بعد ذلك قمت بالتعديل عليه ليعمل على المحتوى ووضعته هنا على موقعي ليستفيد منه من يبحث عن هذه الخاصية وهي في الحقيقة أثارت إعجابي ومفيدة في نفس الوقت.
الكود يتم وضعه في ملف functions.php الموجود ضمن القالب المستعمل :
function benaceur_post_content_min( $new_status, $old_status, $post )
{
if ( $new_status == 'publish' )
{
$content = $post->post_content;
if ( strlen($content) <= 7 )
{
$my_post = array(
'ID' => $post->ID,
'post_status' => 'draft'
);
wp_update_post( $my_post );
wp_die( 'لا يمكن نشر الموضوع, يجب كتابة محتوى ...' );
}
}
}
add_action( 'transition_post_status', 'benaceur_post_content_min', 10,3 );
العدد 7 يشير إلى أنه لا يمكن نشر موضوع يحوي 7 حروف فأقل أي يجب أن تكون 8 فأكثر ولك أن تغير هذه القيمة إلى ما يناسبك :
if ( strlen($content) <= 7 )
وبذلك عند محاولة نشر موضوع بدون محتوى أو محتوى يتكون من 7 أحرف فأقل لا يتم نشره ويبقى كمسودة فقط مع ظهور رسالة تعلمه بذلك, وكذلك نفس النتيجة مع المواضيع المنشورة عند التعديل عليها.
ملاحظة هامة : هذا الكود في حال كان الموضوع منشورا أو قبل النشر أما في حال إرساله للمراجعة تابع الرد أسفل الموضوع.
انتهى.
رابط الموضوع للنسخ
السلام عليكم
بعد تجريب الكود (وقد كنت أبحث عنه منذ مدة) عمل مع التدوينة في حال نشرها ولم يعمل عند إرسالها للمراجعة
أرجوا أن يكون السؤال واضحا ولكم جزيل الشكر
وعليكم السلام
فقط قم باستبدال :
ب :
واستبدل :
ب :
بالتوفيق. 😀
تمام 10/10
شكرا لك وجزاك الله خيرا
اضافة ممتازة ، احسنتم
شكرا جزيلا ، بعد تنصيب هذه الاضافة وتجربتها ، وجدت ان المشاركة تحفظ بشكل مسودة بدون تنبيه المستخدم حول هذا الشيء ، حاول ان تجعل الكود يعيد فتح نفس المسودة في طور التحرير بدلا من اضطرار المستخدم الى ضغط زر الرجوع في المتصفح فيجد نموذج ادخال مقالة جديدة مفتوح للتو ، او الطريقة الاخرى ان تظهر نفس رسالة – لا يمكن النشر لا يوجد محتوى-نفس هذه الرسالة تظهر بشكل مسج بوكس بدون مغادرة الصفحة ، ودمت موفقا .
هذا الفونت شو اسمو ؟؟
أهلا وسهلا …
فقط بدل الأول ضع التالي في ملف functions.php :
شكرا على التنبيه لأن الكود كان يشتغل على النسخ القديمة.
السلام عليكم من فضلك
في أخر تعليق لك عن كود عدم نشر المقال او ارسال مراجعه دون محتوي الكود الأخير يعمل بكفاءة لكن اذا تفضلت بإضافة تحديث للكود بحيث انه يمنع النشر الا بعد كتابة 300 كلمة وهنا اقصد عدد للكمات وليس عدد الحروف كما في الكود الأصلي بالموضوع أعلاه …. هل يمكن أيضا إيقاف زر تحديث المقال المنشور بالفعل الا بعد إضافة مثلا 50 كلمه ؟
وعليكم السلام
في الشطر الثاني من السؤال هل تقصد بالمقال المنشور الذي تم إرساله للمراجعة pending ؟ لأن الأعضاء العاديين (مساهم) لا يمكنهم تحرير مواضيعهم بعد النشر ولكن فقط تلك المرسلة للمراجعة.
ما اقصده هو :
اذا كانت( العضوية كاتب فقط ) فلا يمكن نشر المقال الا بعد كتابة عدد معين من الكلمات بالفرض انها 250 او 300 كلمة مع وجود تنبيه يظهر في نفس مكان المحرر دون الخروج منه. شيء أخر أنه في حالة رغبة الكاتب ( بتحديث تاريخ النشر ) فلا يمكن ذلك إلا بعد إضافة عدد مثلا 50 كلمه للمقال ، مع الاخذ بالاعتبار ان الضغط على زر تحديث يعمل بشكل طبيعي اذا لم يقم الكاتب بتحديث التاريخ ..
اما فيما يخص المساهم فعندك حق انه بكل الأحوال سوف يرسل مقاله للمراجعة فلا داعي لتضمينه بالكود . شكرا لك
بالنسبة للجزء الأول من السؤال مفهوم.
أما ما يخص الشق الثاني فهل تقصد أن الكاتب يمكنه تحرير المقالة المنشورة, إلا إذا أراد أن يحرر تاريخ نشر المقالة فإنه لا يمكنه التحديث إلا إذا أضاف عددا معينا من الكلمات إلى الكلمات الموجودة مسبقا, فهل هذا ما تقصده؟
الله ينور عليك بالضبط هذا ما اقصد ، أن عضوية الكاتب إذا كان عنده مقال منشور بالفعل بتاريخ مثلا 8/30 ويريد أن يحدث التاريخ ليكون 9/3 ويعيد نشر المضوع بالتاريخ الجديد فلا يمكنه ذلك إلا إذا أضاف معلومات جديده بعدد كلمات معين مثلا 50 كلمة حتى يستطيع النشر بالتاريخ الجديد . لو فرضنا ان الكاتب اضاف 49 كلمة فيظهر له تنبيه يظهر داخل المحرر / مثال /( لا يمكن النشر إلا إذا أضفت 50 كلمة ).
أسف على الاطالة والطلبات الكثيرة .. ربنا يزيدك من علمه. شكرا لك
تفضل ضع التالي مكان الأول:
تحديث الكود في الرد التالي: https://benaceur-php.com/?p=1680/#comment-1954
السلام عليكم :
مع تقديري لاهتمامك ومجهودك الكبير اللهم بارك لك /
للأسف في حالة كتابة مقال جديد وعمل (## حفظ مسودة أو نشر المقال ##) تظهر رسالة عذرا, لا يمكن تحديث تاريخ الموضوع إلا إذا أضفت إليه 50 كلمة … وطبعا يرفض النشر او التحديث وبالتالي لم أستطع تجربة فعالية تحديد عدد 250 كلمة للمقال .. مع ملاحظة شديدة الأهمية أن مع كل الإجراءات سواء نشر او حفظ مسودة او تحديث التاريخ ## فإنه يرجع المقال إلي أخر حفظ تلقائي ويختفي أي تعديل تم على المقال ؟!! مثلا انا اضفت 49 كلمة او صورة او رابط وقمت بتحديث التاريخ فان يرجع لحالة الأولي ويختفي اي تعديل ولو فرضنا أضفت 49 كلمة ونسيت ان التحديث يطلب 50 فان ال 49 يختفوا تماما . فهل يمكن للكود أن يوقق زر التحديث دون المساس بذاكرة المحرر من التعديلات …. سامحني انا أحاول تفسير وتخيل ما يحدث دون العلم بإمكانية فعله أو لا . فأنت من يصحح لي ما يمكن فعله وما لا يمكن .. شكرا أخي
مسألة أنه لا يحتفظ بالمحتوى بعد ظهور رسالة الخطأ هذه مسألة أخرى سنراها فيما بعد.
بالنسبة أن الكاتب لا يمكنه حفظ الموضوع المنشور كمسودة أنا فعلت ذلك قصدا ولم يفتني ذلك لأن لو تركنا له إمكانية حفظ الموضوع المنشور كمسودة سيتحايل ويحرر الموضع المنشور ثم يقوم بتغيير حالته إلى مسودة ويحفظه ثم يعدل التاريخ ثم يعيد نشره من جديد وبالتالي مالفائدة من الكود؟ أرجوا أن تكون قد استوعبت الفكرة؟
نعم أخي لكن انا أقصد انه لا يمكن حفظ مسوده لمقال جديد …حتي انه لا يمكن نشر المقال أيضا وهنا اتحدث عن مقال جديد لا يمكن حفظه ولا نشرة .!!
أخي أرسلت إليك علي فيس بوك إذا كان الأكاونت يخص الأصدقاء
تم تحديث الكود في الرد السابق https://benaceur-php.com/?p=1680/#comment-1945
غيّر القيمتان إلى:
فقط حتى تتمكن من التجريب ثم أعدهما إلى القيمة التي ترغب.
الآن الكود مبرمج ليعمل كالتالي:
1- عند النشر (بمعنى مقال غير منشور مسبقا):
– عند الضغط على “نشر” لا يمكن حتى يتحقق شرط 3 كلمات على الأقل
– عند الضغط على “حفظ المسودة” يتم النشر دون شرط.
2- عند التحديث (بمعنى مقال منشور مسبقا حتى لو تم تعديله إلى مسودة):
– عند الضغط على “تحديث” يمكن تحديثه إذا لم يتم تعديل التاريخ حتى لو قام بتحرير الحالة إلى مسودة أو بانتظار المراجعة.
– عند الضغط على “تحديث” مع تعديل تاريخ النشر لا يمكن تحديثه حتى يتحقق شرط إضافة 1 كلمة على الأقل حتى ولو قام بتحرير الحالة إلى مسودة أو بانتظار المراجعة.
جرب بتريث وأخبرني مع الإسراع في الرد إن أمكن ذلك حتى ننتهي (ولا تنس أن هذا الكود لرتبة كاتب يعني عند التجريب لا تنس أن تدخل بحساب كاتب)
تسلم ويسلم مجهودك أخي
الكود يعمل تمام شكرا على اهتمامك ودعمك
اللهم بارك لك في نفسك وعلمك وعملك
آمين …
عندما أنتهي من طريقة حفظ المحتوى عندما لا يبلغ العدد المعين عند ظهور رسالة الخطأ, بإذن الله سأضعه هنا في الرد السابق, حتى لا يفقد الكاتب المحتوى الذي أضافه:
https://benaceur-php.com/?p=1680/#comment-1945
المهم أي جديد سأقوم بتحديث الكود في ذلك الرد.
ان شاء الله في الانتظار وسوف اتابع يوميا حتي يتم التحديث
شكرا أخي
عذرا على التأخر في الرد لانشغالات خاصة …
تم إضافة خاصية حفظ المحتوى مؤقتا حتى لا يتم فقده عند ظهور رسالة الخطأ, بالإضافة إلى تصحيح شيء في الكود السابق وهو إمكانية تعديل الموضوع وكتابة كلمات أقل من المحددة عند النشر يعني مثلا إذا حددنا 250 كلمة لإمكانية نشر موضوع يمكنه تعديله بعد نشره وجعل عدد الكلمات أقل, تم تصحيح ذلك في الكود التالي, كذلك في الكود الجديد تم منع إضافة موضوع أو تعديله بدون محتوى يعني فارغ.
احذف الكود السابق وضع مكانه التالي:
أنت رائع يا أخي .. ليس فقط في استخدام الاكود والووردبريس.. بل الأكثر والأهم هو رؤيتك وتفكيرك في تحويل ألا شيء إلي أشياء مفيدة وعظيمة 🙂
أعانك الله ورزقك من حيث لا تحتسب وبارك لك ..شكر أخي….
آمين يا رب العالمين … بالتوفيق أخي.