اذهب إلى المحتوى

السؤال

نشر

الكود المرفق تتم طباعته على الصفحة ويظهر عند عرض الصفحة في المتصفح.
عندما استبدله باي كود آخر مؤقت او تشخيصي تختفي المشكلة.
هذا هو الكود :
 

<?php

/*

Template Name: قالب صفحة الفئات

*/

get_header();

// استيراد ملفات التصنيفات

require_once(get_template_directory() . '/includes/category-items.php');

require_once(get_template_directory() . '/includes/artists-roaad.php');

require_once(get_template_directory() . '/includes/artists-modern.php');

require_once(get_template_directory() . '/includes/artists-hakiba.php');

require_once(get_template_directory() . '/includes/artists-shaabi.php');

require_once(get_template_directory() . '/includes/artists-female-voices.php');



// جلب نوع التصنيف من عنوان الصفحة

$page_title = get_the_title();



// مصفوفة المطابقة بين عناوين الصفحات وأنواع التصنيفات

$title_to_type = array(

'أغاني الرواد' => 'roaad',

'الغناء الحديث' => 'modern',

'أغاني الحقيبة' => 'hakiba',

'الغناء الشعبي' => 'shaabi',

'الأصوات النسائية' => 'female_voices'

);



// تحديد نوع التصنيف

$category_type = isset($title_to_type[$page_title]) ? $title_to_type[$page_title] : '';



// جلب وصف التصنيف من محتوى الصفحة

$category_description = get_the_content();



// جلب الفنانين

$category_items = get_category_artists($category_type);

?>

<!-- إضافة تنسيق CSS مع العناصر الدائرية وحجم أصغر -->

<style>

.items-grid {

display: flex;

flex-wrap: wrap;

justify-content: flex-start;

gap: 10px;

direction: rtl;

padding: 10px;

}

.grid-item {

/* تقليل الحجم إلى النصف - زيادة عدد العناصر في الصف */

flex: 0 0 calc(12.5% - 10px); /* 8 عناصر في الصف */

margin-bottom: 10px;

box-shadow: 0 1px 3px rgba(0,0,0,0.1);

transition: transform 0.2s ease, box-shadow 0.2s ease;

border-radius: 50%; /* جعل العناصر دائرية */

overflow: hidden;

}

@media (max-width: 1600px) {

.grid-item {

flex: 0 0 calc(14.285% - 10px); /* 7 عناصر في الصف */

}

}

@media (max-width: 1400px) {

.grid-item {

flex: 0 0 calc(16.666% - 10px); /* 6 عناصر في الصف */

}

}

@media (max-width: 1200px) {

.grid-item {

flex: 0 0 calc(20% - 10px); /* 5 عناصر في الصف */

}

}

@media (max-width: 992px) {

.grid-item {

flex: 0 0 calc(25% - 10px); /* 4 عناصر في الصف */

}

}

@media (max-width: 768px) {

.grid-item {

flex: 0 0 calc(33.333% - 10px); /* 3 عناصر في الصف */

}

}

@media (max-width: 576px) {

.grid-item {

flex: 0 0 calc(50% - 10px); /* 2 عناصر في الصف */

}

}

.grid-item:hover {

transform: translateY(-2px);

box-shadow: 0 3px 8px rgba(0,0,0,0.15);

}

.grid-item-image {

position: relative;

width: 100%;

padding-top: 100%; /* نسبة 1:1 لإنشاء دائرة متساوية */

}

.grid-item img {

position: absolute;

top: 0;

left: 0;

width: 100%;

height: 100%;

object-fit: cover;

display: block;

}

.grid-item-content {

position: absolute;

bottom: 0;

left: 0;

right: 0;

background: #003366; /* تم تغيير الخلفية إلى اللون الأزرق الداكن */

padding: 6px;

text-align: center;

}

.grid-item-title {

margin: 0;

font-size: 14px; /* زيادة حجم الخط إلى 14px كما طلبت */

line-height: 1.2;

white-space: nowrap;

overflow: hidden;

text-overflow: ellipsis;

}

.grid-item-title a {

color: white; /* تغيير لون النص للتباين مع خلفية تراكب شفافة */

text-decoration: none;

}

.grid-item-title a:hover {

color: #f0f0f0;

}



.category-description {

text-align: right;

padding: 10px 15px;

margin-bottom: 15px;

}

</style>



<div class="container-fluid">

<?php if (!empty($category_description)): ?>

<div class="category-description">

<?php echo esc_html($category_description); ?>

</div>

<?php endif; ?>



<div class="items-grid">

<?php if (!empty($category_items)): ?>

<?php foreach ($category_items as $item): ?>

<div class="grid-item">

<div class="grid-item-image">

<a href="<?php echo esc_url($item['url']); ?>">

<img src="<?php echo esc_url($item['image']); ?>" alt="<?php echo esc_attr($item['name']); ?>">

</a>

<div class="grid-item-content">

<h3 class="grid-item-title">

<a href="<?php echo esc_url($item['url']); ?>"><?php echo esc_html($item['name']); ?></a>

</h3>

</div>

</div>

</div>

<?php endforeach; ?>

<?php else: ?>

<p style="text-align: center; width: 100%;">لا توجد عناصر في هذه الفئة</p>

<?php endif; ?>

</div>

</div>



<?php get_footer(); ?>

 

Recommended Posts

  • 0
نشر

تفقد ملف القالب page-templates/your-template-file-name.php من خلال محرر vscode، وتأكد تمامًا من أن 

<?php 

هي أول شيء في الملف ولا توجد أي مسافات أو أسطر فارغة أو أي رموز قبلها واحذف أي شيء تجده قبلها.

ثم استخدم خيار Save with Encoding في محرر الأكواد وتأكد من اختيار  UTF-8  ثم احفظ الملف بالضغط على CTRL + S.

Snag_1196c26b.thumb.png.cd756cdb8196024041f94afa50af2b56.png

لو استمرت المشكلة قم بتعليق أي إضافة // في بداية السطر لجميع أسطر require_once مؤقتًا:

<?php

get_header();

// // استيراد ملفات التصنيفات - تم التعليق مؤقتًا
// require_once(get_template_directory() . '/includes/category-items.php');
// require_once(get_template_directory() . '/includes/artists-roaad.php');
// require_once(get_template_directory() . '/includes/artists-modern.php');
// require_once(get_template_directory() . '/includes/artists-hakiba.php');
// require_once(get_template_directory() . '/includes/artists-shaabi.php');
// require_once(get_template_directory() . '/includes/artists-female-voices.php');


?>

احفظ الملف وجرب عرض الصفحة، وتفقد هل اختفت مشكلة طباعة الكود؟ وبالطبع لن تظهر البيانات، لكن يجب ألا يظهر الكود نفسه.

إذا اختفت المشكلة، فذلك يعني أن أحد الملفات المُضمَّنة هو السبب، أعد تفعيل أسطر require_once واحدًا تلو الآخر، مع تحديث الصفحة بعد كل واحد، حتى تكتشف أي ملف يتسبب في ظهور المشكلة مجددًا.

بمجرد تحديد الملف المُسبب للمشكلة، افتحه وافحصه بحثًا عن مسافات بيضاء أو BOM في بدايته قبل وسم <?php الخاص به، أو أخطاء في بناء الجملة البرمجية Syntax Errors، أو أي كود يقوم بطباعة شيء بشكل غير متوقع.

وللمساعدة في تفقد المشكلة، قم بتفعيل وضع التصحيح Debug Mode في ووردبريس، من خلال فتح ملف wp-config.php في المجلد الرئيسي وابحث عن define( 'WP_DEBUG', false );.

قم بتغييرها إلى:

define( 'WP_DEBUG', true ); 
if ( WP_DEBUG ) {
    define( 'WP_DEBUG_LOG', true );  
    define( 'WP_DEBUG_DISPLAY', true ); 
    @ini_set( 'display_errors', 1 );
}

بالطبع لا تترك WP_DEBUG_DISPLAY بقيمة true على موقع حي على استضافة يتصفحها المستخدمين، استخدمها فقط للتشخيص.

الآن، عند زيارة الصفحة، سترى رسالة خطأ PHP واضحة بدلًا من الكود المطبوع، وسيوجهك مباشرة إلى المشكلة، وتفقد أيضًا من ملف wp-content/debug.log بحثًا عن أي أخطاء مسجلة.

  • 0
نشر
بتاريخ 59 دقائق مضت قال Mustafa Suleiman:

تفقد ملف القالب page-templates/your-template-file-name.php من خلال محرر vscode، وتأكد تمامًا من أن 

<?php 

هي أول شيء في الملف ولا توجد أي مسافات أو أسطر فارغة أو أي رموز قبلها واحذف أي شيء تجده قبلها.

ثم استخدم خيار Save with Encoding في محرر الأكواد وتأكد من اختيار  UTF-8  ثم احفظ الملف بالضغط على CTRL + S.

Snag_1196c26b.thumb.png.cd756cdb8196024041f94afa50af2b56.png

لو استمرت المشكلة قم بتعليق أي إضافة // في بداية السطر لجميع أسطر require_once مؤقتًا:

<?php

get_header();

// // استيراد ملفات التصنيفات - تم التعليق مؤقتًا
// require_once(get_template_directory() . '/includes/category-items.php');
// require_once(get_template_directory() . '/includes/artists-roaad.php');
// require_once(get_template_directory() . '/includes/artists-modern.php');
// require_once(get_template_directory() . '/includes/artists-hakiba.php');
// require_once(get_template_directory() . '/includes/artists-shaabi.php');
// require_once(get_template_directory() . '/includes/artists-female-voices.php');


?>

احفظ الملف وجرب عرض الصفحة، وتفقد هل اختفت مشكلة طباعة الكود؟ وبالطبع لن تظهر البيانات، لكن يجب ألا يظهر الكود نفسه.

إذا اختفت المشكلة، فذلك يعني أن أحد الملفات المُضمَّنة هو السبب، أعد تفعيل أسطر require_once واحدًا تلو الآخر، مع تحديث الصفحة بعد كل واحد، حتى تكتشف أي ملف يتسبب في ظهور المشكلة مجددًا.

بمجرد تحديد الملف المُسبب للمشكلة، افتحه وافحصه بحثًا عن مسافات بيضاء أو BOM في بدايته قبل وسم <?php الخاص به، أو أخطاء في بناء الجملة البرمجية Syntax Errors، أو أي كود يقوم بطباعة شيء بشكل غير متوقع.

وللمساعدة في تفقد المشكلة، قم بتفعيل وضع التصحيح Debug Mode في ووردبريس، من خلال فتح ملف wp-config.php في المجلد الرئيسي وابحث عن define( 'WP_DEBUG', false );.

قم بتغييرها إلى:

define( 'WP_DEBUG', true ); 
if ( WP_DEBUG ) {
    define( 'WP_DEBUG_LOG', true );  
    define( 'WP_DEBUG_DISPLAY', true ); 
    @ini_set( 'display_errors', 1 );
}

بالطبع لا تترك WP_DEBUG_DISPLAY بقيمة true على موقع حي على استضافة يتصفحها المستخدمين، استخدمها فقط للتشخيص.

الآن، عند زيارة الصفحة، سترى رسالة خطأ PHP واضحة بدلًا من الكود المطبوع، وسيوجهك مباشرة إلى المشكلة، وتفقد أيضًا من ملف wp-content/debug.log بحثًا عن أي أخطاء مسجلة.

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

// require_once(get_template_directory() . '/includes/category-items.php')
الملف (category-items.php) يحتوي على الكود التالي ارجو التنبيه اذا كان يحتوي على اي خطأ واضح:

<?php

// المسار الأساسي لصور الفنانين

define('ARTISTS_IMAGE_PATH', get_template_directory_uri() . '/images/');

 

// دالة رئيسية لجلب فنانين حسب التصنيف

function get_category_artists($category_type) {

$artist_functions = array(

'roaad' => 'get_roaad_artists',

'modern' => 'get_modern_artists',

'hakiba' => 'get_hakiba_artists',

'shaabi' => 'get_shaabi_artists',

'female_voices' => 'get_female_voices_artists'

);

 

// استدعاء الدالة المناسبة للتصنيف

if (isset($artist_functions[$category_type]) &&

function_exists($artist_functions[$category_type])) {

$artists = $artist_functions[$category_type]();

// ترتيب الفنانين أبجديًا

usort($artists, function($a, $b) {

return strcmp($a['name'], $b['name']);

});

return $artists;

}

return array();

}

  • 0
نشر

الكود يعتمد على وجود دوال مثل get_roaad_artists()، get_modern_artists()، وغيرهم، ويفترض أن تكون معرفة في ملفات أخرى artists-roaad.php، artists-modern.php، أو ما شابه، والتي يتم استدعاؤها في القالب الرئيسي.

تفقد تلك الملفات واحد تلو الآخر.

عامًة قم بتبسيط category-items.php مؤقتًا لمعرفة هل هو المسبب أم لا، باستبدال الكود به بالتالي:

<?php
define('ARTISTS_IMAGE_PATH', get_template_directory_uri() . '/images/');
function get_category_artists($category_type) {
    return array(
        array('name' => 'فنان اختبار', 'url' => '#', 'image' => ARTISTS_IMAGE_PATH . 'test.jpg')
    );
}

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

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...