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

السؤال

نشر

أحاول من مدة عمل فلترعن طريق مصفوفة على ووردبريس، بالشكل التالي:

$non_area_page = array(160951,160955); // هذه لا تعمل

add_filter( 'term_link',change_term_name , 10, 3 );  
function change_term_name( $termlink, $term, $taxonomy )
{
   /*If on page */
    if(is_page()){
        $current_id = get_queried_object_id();
        $current_post = get_post($current_id);
        $slug = $current_post->post_name; 
        if(!in_array($current_id,$non_area_page)) // array is defined in start of code above
        $termlink = esc_url( add_query_arg( ['tag' => $slug], $termlink ) );

    }          
    return  $termlink;
}

وأحصل على الخطأ التالي:

Warning: in_array() expects parameter 2 to be array, null given

لكن عند تمرير المصفوفة بشكل مباشر، يعمل الكود:

add_filter( 'term_link',change_term_name , 10, 3 );
function change_term_name( $termlink, $term, $taxonomy )
{
   /*If on page */
    if(is_page()){
        $current_id = get_queried_object_id();
        $current_post = get_post($current_id);
        $slug = $current_post->post_name; 
        if(!in_array($current_id,array(160951,160955))) // المصفوفة مُررت بشكل مباشر
        $termlink = esc_url( add_query_arg( ['tag' => $slug], $termlink ) );

    }        
    return  $termlink;
}

هل هذا الخطأ متعلق بكيفية تعريف المصفوفة؟ أين هو الخطأ؟

Recommended Posts

  • 0
نشر (معدل)

بالنسبة للدوال -functions- على لغة php لا يمكن تعريف متغير ثم استعماله داخل الدالة، وهذا من أساسيات اللغة.

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

هذا مثال عن دالة مع parameters:

<?php
function add_some_extra(&$string)
{
    $string .= ', et un peu plus.';
}
$str = 'Ceci est une chaîne';
add_some_extra($str);
echo $str; //  'Ceci est une chaîne, et un peu plus.'
 تُظهر <=
?>

ولحل المشكل المتعلق بك على ووردبريس استعمل دالة معرفة بشكل مًجمل global بهذا الشكل :

funtion get_global_array()
{
    //   1, 2 , 3 ارجاع القيم
    return [1, 2, 3];
}

عن طريق:

get_global_array()

يمكن استعمال الدالة في أي مكان من الصفحة.

 

تم التعديل في بواسطة E.Nourddine

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...