Cum să adaugi add_meta_box la un Șablon Specific de Pagină?

21 ian. 2013, 14:59:35
Vizualizări: 32.9K
Voturi: 5

Vreau să adaug add_meta_box la un tip specific de pagină cum ar fi Șablon de Pagină sau Șablon de Produs.

Folosesc acest articol http://wp.smashingmagazine.com/2011/10/04/create-custom-post-meta-boxes-wordpress/ pentru a încerca acest lucru.

0
Toate răspunsurile la întrebare 4
2
10

Dacă numele fișierului șablonului personalizat al paginii este foobar.php, poți folosi get_post_meta():

global $post;
if ( 'foobar.php' == get_post_meta( $post->ID, '_wp_page_template', true ) ) {
    // Pagina curentă are atribuit șablonul foobar
    // faci ceva
}

Personal, prefer să apelez această funcționalitate în callback-ul meu add_meta_boxes_page și să o învălui în jurul apelului add_meta_box().

function wpse82477_add_meta_boxes_page() {
    global $post;
    if ( 'foobar.php' == get_post_meta( $post->ID, '_wp_page_template', true ) ) {
        add_meta_box( $args );
    }
}
add_action( 'add_meta_boxes_page', 'wpse82477_add_meta_boxes_page' );

Va trebui doar să instruiești utilizatorii să salveze pagina după ce atribuie șablonul, astfel încât caseta meta să apară.

21 ian. 2013 15:17:47
Comentarii

Mulțumesc mult, o problemă aici pentru a informa utilizatorul să salveze pagina o singură dată. Apropo, mi-a economisit mult timp. Mulțumesc CHIP

Ajay Patel Ajay Patel
21 ian. 2013 15:25:01

Mulțumesc pentru soluție. Nu-mi aminteam dacă add_meta_boxes era prea devreme pentru asta. Aș putea sugera să folosiți if( 'foobar.php' == get_page_template_slug( $post->ID )) în loc să folosiți direct cheia meta.

Jer Jer
25 iul. 2017 19:45:36
0

Am găsit câteva erori cu opțiunea de mai sus, dar am personalizat această opțiune de mai jos și a ajutat - fără erori deloc.

add_action('add_meta_boxes', 'add_product_meta');
function add_product_meta()
{
    global $post;

    if(!empty($post))
    {
        $pageTemplate = get_post_meta($post->ID, '_wp_page_template', true);

        if($pageTemplate == 'page-templates/product-page.php' )
        {
            add_meta_box(
                'product_meta', // $id
                'Informații despre produs', // $title
                'display_product_information', // $callback
                'page', // $page
                'normal', // $context
                'high'); // $priority
        }
    }
}

function display_product_information()
{
    // Adaugă HTML pentru metadatele postului
}

https://paulund.co.uk/display-post-meta-box-specific-page-templates

Este curat

13 sept. 2016 08:30:42
0

Acesta este o soluție cu numele paginii:

Accueil este numele paginii.

    $screens = ['Accueil'];
    foreach ($screens as $screen) {
     if ( get_the_title() == $screen ) {//condiție
     add_meta_box(
      'accueil_données',
      'Informații despre Orchestră',
      'metabox_accueil_infos',
      'page',
      'normal',
      'high'
     );
   }
}
     
18 apr. 2018 23:46:26
2
-1
function mcf_add_custom_metabox() {
    global $post;
    if ( $_REQUEST['post'] == 30 ) {
        add_meta_box( 'shop_editor', ' ', 'mcf_callback', 'page' );
    }
}
add_action( 'add_meta_boxes_page', 'mcf_add_custom_metabox' );

Am găsit o metodă de a adăuga metabox într-o pagină specifică folosind ID-ul paginii.

15 dec. 2016 08:17:52
Comentarii

Te rog să [editezi] răspunsul tău și să adaugi o explicație: de ce ar putea rezolva problema?

fuxia fuxia
15 dec. 2016 09:26:30

Hard coding-ul nu este niciodată o idee bună. ;)

dhuyvetter dhuyvetter
5 iun. 2017 10:46:15