• 0

كيف أبني فلتر عن طريق مصفوفة على ووردبريس؟

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

$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;
}

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

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 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

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن