it-swarm.asia

لماذا لا توجد وظيفة عمومية في وورد لإرجاع إخراج أي استدعاء وظيفة؟

لدينا علامات قالب وبعض الوظائف التي تبدأ بـ get. في بعض الأحيان سيكون من الجيد في الموضوعات التي يجب القيام بها مثل:

$title = the_title();

لاستخدام أتش تي أم أل في وقت لاحق. هذا مجرد مثال مبسط ، بطبيعة الحال هناك بعض الوظائف مثل get_the_title () ؛ ولكن هذا يعمل لهذه الوظيفة فقط.

أنا أتساءل لماذا لا توجد مثل هذه الوظيفة:

function get_output() {
    $args     = func_get_args();
    $callback = array_shift($args);
    ob_start();
    call_user_func_array($callback, $args);
    return ob_get_clean();
}

قد يؤدي ذلك إلى تحويل أي وظيفة لها خرج إلى دالة مرتجعة:

$title = get_output('the_title');

أي فكرة لماذا لم يتم التفكير في ذلك؟ يمكن لكل مؤلف موضوع أو قراصنة الاستفادة من هذا ، أليس كذلك؟

3
hakre

في الرد المباشر على السؤال ، لا يتضمن WordPress وظيفة لهذا جزئيًا لأنه لا ينطبق بشكل خاص على وظائف WordPress. أي. إنها مشكلة PHP (محتملة) وليست WordPress.

أيضًا ، لن أقول إنها مسؤولية WordPress عن توفير حلول للمكونات الإضافية التي لا توفر وظيفة لإرجاع البيانات (التي تتعارض مع نمط WordPress العام).

2
Joe Hoyle

أود أن أزعم أن get_posts هو WP إجابة لطلبك. تم إنشاء علامات القوالب للاستخدام في The Loop ، لكن من السهل بما يكفي لأي WP 'hacker' استخدام get_posts () بدلاً من ذلك ، وتعيين ، على سبيل المثال: $ post-> post_title إلى متغير. من المحبط في البداية ، التوقف عن الاعتماد على The Loop ، لكن من السهل بما فيه الكفاية الانتقال إلى الماضي.

2
kevtrout

نظرًا لأنه قد يكون من الأسهل بالنسبة لبعض مطوري السمات ، عليك أن تأخذ الأمر بالطريقة التي يتم بها. لكن يمكنك كتابة الوظيفة بنفسك:

function get_output($function){
    return call_user_func('get_'.$function);
}

كتابة get_the_title () هي أيضًا أقصر من كتابة get_output ('the_title') :)

1
2ndkauboy