¿Cargar publicación con una plantilla diferente?

3

Digamos que tengo un archivo single.php con un diseño determinado (gráfico intensivo). Quiero crear una especie de versión de texto sin formato de la misma página a la que solo se llama cuando el usuario hace clic en el enlace proporcionado. Puedo crear single-plaintxt.php, pero ¿cómo puedo generar un enlace y / o función que solo cargue el contenido de la página usando ese archivo cuando se haga clic?

¡Gracias!

    
pregunta RodeoRamsey 17.02.2011 - 04:18

3 respuestas

7

puedes hacerlo así:

    //add my_print to query vars
function add_print_query_vars($vars) {
    // add my_print to the valid list of variables
    $new_vars = array('my_print');
    $vars = $new_vars + $vars;
    return $vars;
}

add_filter('query_vars', 'add_print_query_vars');

luego agregue una redirección de plantilla basada en ese query_var:

add_action("template_redirect", 'my_template_redirect_2322');

// Template selection
function my_template_redirect_2322()
{
    global $wp;
    global $wp_query;
    if (isset($wp->query_vars["my_print"]))
    {
        include(TEMPLATEPATH . '/my_print_themplate.php');
        die();

    }
}

cree un nuevo archivo en su directorio de temas llamado "my_print_themplate.php" pegue este código allí.

<?php
    define('WP_USE_THEMES', false);
    echo "<h1>printer friendly version:</h1>\n";
    query_posts('p='.$_GET['pid']);
    if (have_posts()){
        while ( have_posts() ) { the_post();
            the_content();
        }
    }else{
    echo 'nothing found';
    }
?>

y ahora todo lo que tienes que hacer es crear un enlace con? my_print = $ post_id en tu bucle único regular.

espero que esto ayude

    
respondido por el Bainternet 17.02.2011 - 11:02
2

Acabo de modificar ligeramente la respuesta de @ Bainternet.

Usando un interruptor en post_type, incluso es posible redirigir a diferentes plantillas. El valor predeterminado permitirá a wordpress ignorar el parámetro my_print y continuar como de costumbre.

add_action("template_redirect", 'my_template_redirect_2322');

// Template selection
function my_template_redirect_2322()
{
    global $wp;
    global $wp_query;

    if (isset($wp->query_vars["my_print"]))
    {
        switch ($wp_query->post->post_type) {
        case "page" :
            include(TEMPLATEPATH . '/my_print_page_themplate.php');
            die();
        case "portfolio" :
            include(TEMPLATEPATH . '/my_print_portfolio_themplate.php');
            die();
        case "post" :
            include(TEMPLATEPATH . '/my_print_post_themplate.php');
            die();
        default:
            // load as usual
        }
    }
}
    
respondido por el Daishi 22.01.2014 - 18:09
0

Gracias por la solución, Bainternet. Como se informó en RodeoRamsay, se obtuvieron varias publicaciones del tipo de publicación predeterminado, así que conseguí que funcionara con mi tipo de publicación personalizada, por lo que:

<?php
    define('WP_USE_THEMES', false);
    //echo "<h1>printer friendly version:</h1>\n";
    setup_postdata($_GET['pid']); 
    while ( have_posts() ) : the_post();
            the_content();

    endwhile;
?>
    
respondido por el Taruc 28.07.2014 - 20:08

Lea otras preguntas en las etiquetas