التصنيف: دعم عام
التصنيف: دعم عام
  • كيفية انشاء قالب ابن child theme
  • طريقة عمل نافذة منبثقة عند الضغط على كلمة
  • إضافة رابط لجميع صور المقالات أوتوماتيكيا

كيفية انشاء قالب ابن child theme

السلام عليكم ورحمة الله لدي قالب من قوالب الووردبريس الافتراضية وأريد أن أعدل ع...
محمد رضا |15 مارس 2019 |6

طريقة عمل نافذة منبثقة عند الضغط على كلمة

السلام عليكمهناك خاصية في موقعكم لما اضغط على كلمة "عن الموقع" تفتح لي نافذة...
قرين |21 جـانفي 2019 |6

إضافة رابط لجميع صور المقالات أوتوماتيكيا

السلام عليكم أحتاج من فضلكم لكود php او java لجعل جميع الصور داخل المواضيع لها...
رشيد |15 جـانفي 2019 |2

  • معرفة ما اذا كان الكاتب قد نشر على الأقل مقالا أو العضو المتصل في الووردبريس

2016/07/29
كاتب الموضوع: BENACEUR
التصنيف: ووردبريس wordpress
معرفة ما اذا كان الكاتب قد نشر على الأقل مقالا أو العضو المتصل أو العضو حسب رقم عضويته على الووردبريس

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

 count_user_posts()

مع استدعاء خانة post_author من جدول post وذلك لاستدعاء رقم عضوية الكاتب :

$post->post_author

ثم نضع المتغير بعدد المقالات التي نريد حيث وضعت هنا 1:

$nm_posts = 1;

فيصبح الكود كالتالي:

$nm_posts = 1;
if (count_user_posts( $post->post_author ) >= $nm_posts) {
echo "هنا المحتوى الذي نريد ظهوره إذا تحقق الشرط";
}

ثم نضع الكود في القالب الذي يحتوي على المقالة كأسفل المقالة مثلا.

أما إذا أردنا أن نضع الشرط في أي مكان للعضو حسب رقم عضويته, نضع التالي (في مثالنا هذا وضعت رقم العضوية 1):

$nm_posts = 1;
if (count_user_posts( 1 ) >= $nm_posts) {
echo "هنا المحتوى الذي نريد ظهوره إذا تحقق الشرط";
}

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

wp_get_current_user()

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

$nm_posts = 1;
$user = wp_get_current_user();
if (count_user_posts( $user->ID ) >= $nm_posts) {
echo "هنا المحتوى الذي نريد ظهوره إذا تحقق الشرط";
}

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

function ben_current_user_post_count(){

}

ثم نضع بداخلها السطر التالي للاستعلام من جدول posts ونضع له شروطا وهي أن يكون post_author يساوي رقم عضوية العضو المتصل ثم نوع المقالة post_type يساوي post ثم نشترط أن تكون المقالة منشورة post_status يساوي publish ثم نضع السطر كله في متغير ولنسميه مثلا $post_count ثم نضع قبل السطر المتغير العام الخاص بقاعدة بيانات الووردبريس global $wpdb; ثم أسفل المتغير الدالة الخاصة بالتحقق من العضو المتصل ونضعها كذلك في متغير هكذا $user = wp_get_current_user(); لتصبح الوظيفة ben_current_user_post_count التي أنشأناها هكذا:

function ben_current_user_post_count(){
 global $wpdb;
	
 $user = wp_get_current_user();
 $post_count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts WHERE post_author = $user->ID AND post_type IN ('post') and post_status = 'publish'" );
}

بقي الآن وضع الشرط والمتغير الذي يساوي عدد المقالات التي نريد تحديدها للشرط:

 $nm_posts = 1;
 
 if ($post_count >= $nm_posts) 
 return "هنا المحتوى الذي نريد ظهوره إذا تحقق الشرط";

لتصبح الوظيفة أو الدالة في الأخير هكذا:

function ben_current_user_post_count(){
 global $wpdb;
	
 $user = wp_get_current_user();
 $post_count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts WHERE post_author = $user->ID AND post_type IN ('post') and post_status = 'publish'" );
 $nm_posts = 1;
 
 if ($post_count >= $nm_posts) 
 return "هنا المحتوى الذي نريد ظهوره إذا تحقق الشرط";
}

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

<?php if ( function_exists('ben_current_user_post_count') ) {echo ben_current_user_post_count();} ?>

الفكرة ببساطة هي أننا نعرف كيف نستغل البرمجة المفتوحة للوردبريس حتى نطور ما نريد لصالحنا ولصالح مواقعنا المهم أن تكون لديك خلفية بأساسيات لغة php وشيء من html و java والووردبريس طبعا.

ملاحظة: من أراد نقل الموضوع إلى مدونته وجب عليه ذكر المصدر: https://benaceur-php.com/?p=2243

بالتفويق


شارك هذا الموضوع على:

رابط الموضوع للنسخ
BENACEUR

نبذة قصيرة عن BENACEUR

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




أضف تعليقك | سجّل دخولك

تعليقاتك تحتاج في هذا الموضوع إلى المراجعة قبل النشر



  1. Avatar
  2. سيرة
    حكيمو
    الذاتية
    ---------------------------
    السيرة الذاتية للمسجلين في الموقع
  3. حكيمو ← علّقَ : 3 تعليقات
    زائر

    شكرا جزيلا أخي وبارك الله فيك على التوضيح وآسف على الإزعاج



  4. BENACEUR
  5. سيرة الذاتية
    ---------------------------
    أقوم بتطوير وإنشاء المواقع خاصة الووردبريس وما يتعلق به كالإضافات حيث ساهمت بخمس إضافات من تطويري, ولذلك فموقعي هذا جعلته يهتم بالدرجة الأولى بتطوير ودعم الووردبريس, ثم الأنترنت والمواقع الإلكترونية بصفة عامة ...
  6. BENACEUR ← علّقَ : 239 تعليقا
    إدارة الموقع

    نعم يمكن ذلك عن طريق الهوك hook لكن يبقى تحديد المكان في القالب محدود حيث لا يمكننا وضع أو استدعاء الدالة في المكان الذي نرغب بالتحديد إذ يوجد أماكن محددة موجود فيها الهوك وذلك في الهيدر أو أسفل الهيدر وفي الفوتر أسفل الموقع وفي المقال أسفله أو أعلاه.
    فمثلا لوضعه في الهيدر نستعمل wp_head وفي الفوتر wp_footer وفي المقال the_content
    نضعه الآن مثلا في الهيدر حيث سيكون الكود هكذا:

    function ben_current_user_post_count(){
     global $wpdb;
    	
     $user = wp_get_current_user();
     $post_count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts WHERE post_author = $user->ID AND post_type IN ('post') and post_status = 'publish'" );
     $nm_posts = 1;
     
     if ($post_count >= $nm_posts) 
     echo "هنا المحتوى الذي نريد ظهوره إذا تحقق الشرط";
    }
    add_action('wp_head', 'ben_current_user_post_count');

    وفي هذه الحالة لا يلزمنا استدعاء الدالة بوضع السطر التالي في القالب:

    <?php if ( function_exists('ben_current_user_post_count') ) {echo ben_current_user_post_count();} ?>

    أي لا نضعه.



  7. Avatar
  8. سيرة
    حكيمو
    الذاتية
    ---------------------------
    السيرة الذاتية للمسجلين في الموقع
  9. حكيمو ← علّقَ : 3 تعليقات
    زائر

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



  10. BENACEUR
  11. سيرة الذاتية
    ---------------------------
    أقوم بتطوير وإنشاء المواقع خاصة الووردبريس وما يتعلق به كالإضافات حيث ساهمت بخمس إضافات من تطويري, ولذلك فموقعي هذا جعلته يهتم بالدرجة الأولى بتطوير ودعم الووردبريس, ثم الأنترنت والمواقع الإلكترونية بصفة عامة ...
  12. BENACEUR ← علّقَ : 239 تعليقا
    إدارة الموقع

    وعليكم السلام
    هذا يسمى المتغير في لغة php مثل الرياضيات تماما نحدد قيمة ما هكذا مثلا:
    h = 2 و k = 4 و m = k+h إذا غيّرنا مثلا h إلى h = 3 سيتغير m ليساوي 7
    بالنسبة للغة php فقط نضيف رمز الدولار $ هكذا:

    $h = 2;

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

    content = "هنا المحتوى الذي نريد ظهوره إذا تحقق الشرط";

    ———————–
    في موضوعنا أنا وضعت المتغير والشرط هكذا:

     $nm_posts = 1;
      if ($post_count >= $nm_posts) 

    يمكن أن نضع القيمة مباشرة في الشرط:

     if ( $post_count >= 1 )


  13. Avatar
  14. سيرة
    حكيمو
    الذاتية
    ---------------------------
    السيرة الذاتية للمسجلين في الموقع
  15. حكيمو ← علّقَ : 3 تعليقات
    زائر

    السلام عليكم
    تابعت الشرح الجميل وفي الحقيقة قد استفدت من هذه الأكواد لكن لدي سؤال من فضلك ما دور هذا:

    $nm_posts = 1;