¿Son content.php y content-single.php lo mismo?

4

Entiendo que al usar get_template_part('content', get_post_format()); ayudará a elegir post format para una página específica de acuerdo con el formato de publicación.

Y si no hay un formato de publicación 'es decir, es estándar', entonces retrocederá a content.php

Pero, ¿qué pasa si uso content-single.php con una lógica como esta?

if (get_post_format() == false) {
    get_template_part('content', 'single');
    } else {
        get_template_part('content', get_post_format());
}

¿Sigo necesitando la página content.php ? ¿Hay alguna otra funcionalidad que no conozca?

    
pregunta Emad Aldeen 15.09.2016 - 18:31

2 respuestas

3

No, content.php y content-single.php no son lo mismo.

En tu ejemplo, CÓDIGO:

if (get_post_format() == false) {
    get_template_part('content', 'single');
} else {
    get_template_part('content', get_post_format());
}

WordPress cargará content-single.php cuando get_post_format() sea false . Sin embargo, get_template_part( $slug, $name ) aún puede intentar cargar content.php cuando lo llame con get_template_part('content', get_post_format()); en el siguiente ejemplo:

  1. get_post_format() devuelve (por ejemplo) video .

  2. Pero no tiene el archivo de parte de plantilla content-video.php .

Básicamente, incluso cuando get_post_format() no es false , content.php todavía le proporcionará la parte de la plantilla predeterminada si no se creó la parte correspondiente de la plantilla relacionada con el formato de la publicación.

  

Línea inferior: sea cual sea el $slug principal, siempre es una buena idea mantener el archivo de la parte de la plantilla predeterminada como la parte final de la plantilla de respaldo (en su caso content.php es el archivo de parte de la plantilla de reserva predeterminada). Así que SÍ, es posible que todavía lo necesites . Así que no lo borres, déjalo en paz.

La siguiente es la parte del CÓDIGO de la función de núcleo get_template_part . Verá que, el núcleo siempre carga $templates[] = "{$slug}.php"; como el archivo de plantilla final alternativo:

function get_template_part( $slug, $name = null ) {
    // ... more CODE from WP core
    $templates = array();
    $name = (string) $name;
    if ( '' !== $name )
        $templates[] = "{$slug}-{$name}.php";

    $templates[] = "{$slug}.php"; 
    locate_template($templates, true, false);
}

Luego, en la función locate_template , recorre la matriz $templates hasta que encuentre la correspondiente archivo, con el siguiente CÓDIGO:

function locate_template($template_names, $load = false, $require_once = true ) {
    $located = '';
    foreach ( (array) $template_names as $template_name ) {
        if ( !$template_name )
            continue;
        if ( file_exists(STYLESHEETPATH . '/' . $template_name)) {
            $located = STYLESHEETPATH . '/' . $template_name;
            break;
        } elseif ( file_exists(TEMPLATEPATH . '/' . $template_name) ) {
            $located = TEMPLATEPATH . '/' . $template_name;
            break;
        } elseif ( file_exists( ABSPATH . WPINC . '/theme-compat/' . $template_name ) ) {
            $located = ABSPATH . WPINC . '/theme-compat/' . $template_name;
            break;
        }
    }
    if ( $load && '' != $located )
        load_template( $located, $require_once );

    return $located;
}

Entonces, como puede ver en el CÓDIGO anterior, si elimina content.php , y si el usuario del tema tiene un formato de publicación para el que no tiene un archivo de parte de plantilla, WordPress no encontrará el archivo de plantilla para retroceder a, por lo que simplemente no cargará nada en ese caso. Como último intento, WordPress intenta cargar un archivo de parte de plantilla desde el directorio wp-includes/theme-compat/ core, pero no hay un archivo de parte de plantilla content.php en el núcleo de WP.

  

Nota: Sin embargo, si está creando un tema secundario y el tema principal ya contiene el archivo content.php , no necesita el archivo content.php en el tema secundario (si no hace ninguna modificación allí), porque en ese caso, WordPress usará el archivo content.php del tema principal como el archivo de parte de la plantilla alternativa.

    
respondido por el Fayaz 06.04.2017 - 11:33
0
  

Podrías arreglártelas solo con una plantilla (content.php). Eso es   usualmente menos que ideal.

De el blog del teamtreehouse debe limpiar su pregunta.

Para mí, este enfoque es un camino alternativo.

    
respondido por el Vishal Kumar Sahu 06.04.2017 - 10:41

Lea otras preguntas en las etiquetas