it-swarm.asia

هل هناك أي السنانير التي تغير المنطق 404؟

شريطة أن يكون لديك صفحة 404 محددة في نسختك ، سيعرض Wordpress صفحة 404 إذا تم تعريف "العلامة" في $ wp_query-> query_vars ، ولا توجد مشاركات مطابقة لتلك العلامة.

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

لقد كنت غوغلينغ ، وقراءة الكود ، وقراءة المخطوطة ، والتجوّل هنا ، ولم أكن قادراً على معرفة مكان تشغيل ووردبريس 404 ، وكيف يمكنني تجاوزه. (لدي شعور بأنه قد يكون له علاقة بـ status_header () في jobs.php ، لكن ليس من الواضح كيف ومتى أحتاج إلى ربطه).

أي مساعدة/الأفكار/التنوير عن تقديره.

شكرا لكم،

~ التصحيح

25
Patch

بعد المزيد من الضرب عبر الشفرة و Googling ، وجدت الإجابة. تم تضمينه في هذا الموضوع (انظر منشور Otto42) ، ولكن بالنسبة للسجل ، فإن إضافة ما يلي إلى المكون الإضافي الخاص بك سيتجاوز معالجة 404 للشروط التي تحددها:

add_filter('template_redirect', 'my_404_override' );
function my_404_override() {
    global $wp_query;

    if (<some condition is met>) {
        status_header( 200 );
        $wp_query->is_404=false;
    }
}

لاحظ أنك بحاجة إلى تعيين "is_404" على "خطأ" قبل PHP رؤوس المخرجات ، وهذا هو السبب في أن تركيبها في منطق القالب هو فكرة جيدة.

~ التصحيح

27
Patch

كنت بحاجة إلى القيام بنفس الشيء لمشروع مخصص حيث كان هناك دائمًا 200 صفحة ، ووجدت أنه يمكنك أيضًا إضافة هذا إلى أعلى ملف القالب الخاص بك (أعلى get_header ()؛)

global $wp_query;
status_header( 200 );
$wp_query->is_404=false;
5
noinput

قم بإنشاء ملف قالب 404.php في السمة الخاصة بك وتخصيصها حسب الحاجة (إضافة إخراج البرنامج المساعد أو أي شيء آخر). لقد ذكرت محددة في نسختك ، ما هو الخطأ في هذا النهج بالضبط بالنسبة لك؟

Codex إنشاء خطأ 404 صفحة

1
Rarst