Schimbarea șablonului de postare în mod corect

27 iul. 2015, 03:05:44
Vizualizări: 101
Voturi: 0

Încerc să creez o opțiune în ecranul de editare al postărilor (backend) pentru a selecta diferite șabloane de postare bazate pe selecție și am nevoie de părerea voastră dacă acesta este modul corect de a face acest lucru.

Iată ce am încercat până acum și funcționează:

Mai întâi am creat un meta box folosind CMB2 Custom Fields

add_action( 'cmb2_init', 'select_template' );

function select_template() {

// Folosește un underscore pentru a ascunde câmpurile din lista de câmpuri personalizate
$prefix = '_templatever_';


 /* Inițializează metabox-ul */
$tempver = new_cmb2_box( array(
    'id'            => 'template_options',
    'title'         => __( 'Opțiuni Șablon', 'idver' ),
    'object_types'  => array( 'post', ), // Tipul de postare
    'context'       => 'side',
    'priority'      => 'high',
    'show_names'    => true, // Arată numele câmpurilor în stânga
) );

$tempver->add_field( array(
    'name'             => 'Selectează Versiunea',
    'id'               => 'temp_ver',
    'type'             => 'select',
    'show_option_none' => true,
    'options'          => array(
        'v1' => __( 'Versiunea 1', 'cmb' ),

    ),
) );

}

Apoi în single.php:

$version = get_post_meta( get_the_ID(), 'temp_ver', true );
                            if ($version == 'v1') {
                                get_template_part('single-video'); 
                            } else {

                            } 

Acum când selectez Versiunea 1 șablonul se schimbă în single-video.

Deci, este acesta modul corect de a face acest lucru sau este mai bine să folosesc formatele de postare?

De asemenea, este mai bun (din punct de vedere al vitezei) să implementez codul plugin-ului în codul temei sau doar să instalez plugin-ul?

Mulțumesc

0
Toate răspunsurile la întrebare 1
0

Cred că, în general, este mai bine să incluzi pluginul CMB2. În legătură cu întrebarea ta, există multe modalități de a aborda acest lucru, dar cred că metoda ta este una solidă. Aș face câteva modificări. Aș actualiza valorile opțiunilor să fie numele părților de template:

'options' => array(
    'single-video' => 'Single Video',
),

Apoi, aș adăuga o funcție helper în functions.php al temei tale:

function idver_get_post_template_part( $post_id ) {
    $template = get_post_meta( $post_id, 'temp_ver', 1 );
    if ( ! $template ) {
        $template = 'default'; // Orice ar fi partea de template implicită
    }

    get_template_part( $template ); 
}

(evident, actualizează 'default' cu orice ar trebui să fie partea de template implicită/fallback. Dacă NU există o valoare implicită, această funcție helper ar trebui actualizată puțin)

Apoi, în single.php, apelează pur și simplu:

idver_get_post_template_part( get_the_ID() );
15 mar. 2016 03:32:58