it-swarm.asia

كيفية إضافة عنصر واجهة مستخدم معين إلى صفحة واحدة فقط؟

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

هل يجب أن أضيف ذلك لجميع صفحات موقعي أم لا؟

6
itsme

ذلك يعتمد على المكان الذي تريد عرض القطعة فيه.

لنبدأ بتسجيل منطقة القطعة (الشريط الجانبي):

add_action( 'wp_loaded', 'wpse_76959_register_widget_area' );
function wpse_76959_register_widget_area()
{
    register_sidebar(
        array (
            'name'          => __(
                'Widgets on page Sample Page',
                'theme_textdomain'
                ),
            'description'   => __(
                'Will be used on a page with a slug "sample-page" only.',
                'theme_textdomain'
                ),
            'id'            => 'sample-only',
            'before_widget' => '<div id="sample-only-widget">',
            'after_widget'  => '</div>',
            'before_title'  => '<h2>',
            'after_title'   => '</h2>',
        )
    );
}

هذا بسيط جدا. نقوم بتسجيل منطقة عنصر واجهة مستخدم جديدة مع بعض العلامات المخصصة.

enter image description here

الآن علينا أن نظهره في مكان ما. يمكننا إضافة إجراء مخصص في قالب page.php الخاص بنا:

do_action( 'show_sample_widget' );

أو يمكننا استخدام إجراء حالي ، فهذا من شأنه أن يحد من الأماكن التي تتوفر بها الأداة. على سبيل المثال ، يتم استدعاء الإجراء loop_start في المرة الأولى التي نسميها the_post() في حلقة. إذا كنا نريد تعيين عنصر واجهة المستخدم في أعلى محتوى الصفحة ، فإننا نستخدم هذا الخطاف:

add_action( 'loop_start', 'wpse_76959_render_widget' );

function wpse_76959_render_widget()
{
    is_page( 'sample-page' ) && dynamic_sidebar( 'sample-only' );
    remove_action( current_filter(), __FUNCTION__ );
}

لإجراء مخصص ، استخدمنا بدلاً من ذلك:

add_action( 'show_sample_widget', 'wpse_76959_render_widget' );
7
fuxia

هناك العديد من المكونات الإضافية التي تسمح بعرض التطبيقات المصغّرة وفقًا لشروط محددة:

يتم توفير حل بديل بواسطة المكون الإضافي التالي ، والذي يسمح لك بتحديد مجموعة مخصصة من عناصر واجهة المستخدم على أساس كل صفحة ، مباشرةً من شاشة تحرير الصفحة:

3
marcochiesi

إذا كنت مرتاحًا في تحرير ملفات القوالب للسمة:

تجد أين

dynamic_sidebar('side_bar_name');

يُطلق عليه ، إما قبله أو بعده ، أو في أي مكان يستخدمه موقعك:

$pageTitle =  get_the_title($post->ID); 
$targetPage = 'the title of the page you want to target goes here';

    if($pageTitle == $targetTitle){    
     the_widget( 'the_widget_unique_id_aka_name', $instance, $args);
    }
   //the_widget() calls a specific widget and displays it

إذا كنت تريد أن تكون أكثر نظافة حول هذا الموضوع: إنشاء وظيفة في وظائف. php التي تبدو وكأنها:

function call_my_widget( $post ){
    $pageTitle =  get_the_title($post-ID); 
    $targetPage = 'the title of the page you want to target goes here';

        if($pageTitle == $targetTitle){    
         the_widget( 'the_widget_unique_id_aka_name', $instance, $args);
        }
}

استدعاء وظيفة مع:

call_my_widget( $post );

يجب استدعاء هذا في الحلقة أو حيث يوجد المتغير العمومي $post.

ثم اتصل بهذه الوظيفة في ملف القالب الخاص بك (page.php ربما؟) لعرض عناصر واجهة المستخدم المستهدفة على صفحتك الهدف فقط.

1
Vigs

يمكنك استخدام widget_display_callback: https://developer.wordpress.org/reference/hooks/widget_display_callback/ فقط قم بتغيير معرف الصفحة على الكود أدناه.

function custom_display_callback( $instance, $widget, $args ){
    if( is_page( 10 ) ){
        return false;
    }
    return $instance;
}
add_filter( 'widget_display_callback', 'custom_display_callback', 50, 3 );

آمل أن يساعد هذا. في صحتك!

0
Jeffrey Carandang