template_redirect para publicaciones individuales con campos personalizados

2

¿Hay alguna forma en que pueda usar is_single() dentro del archivo functions.php de mi complemento? Actualmente, este es el aspecto de mi código:

if(is_single()) :
    function my_template() {
        include(PLUGINDIR . '/supersqueeze/all.php');
        exit;
    }
    add_action('template_redirect', 'my_template');
endif;

Pero por alguna razón, no funciona en absoluto. Si elimino if(is_single()) , funciona pero es para todas las páginas.

Y una vez que lo consiga, tendré que filtrarlo una vez más para ver si la publicación tiene un determinado valor de campo personalizado, digamos que el nombre será Design y el valor será Custom .

Gracias de antemano por cualquier persona que pueda ayudarme.

    
pregunta Jared 22.02.2011 - 01:15

1 respuesta

5

El problema con su código es que está verificando is_single () cuando su complemento se carga por primera vez, antes de que se ejecute la consulta global, por lo que is_single () aún devuelve false. Debe mover la comprobación is_single () dentro de su función my_template:

function my_template() {
    if(is_single() && have_posts() && 'Custom' == get_post_meta(get_the_ID(), 'Design')) {
    include(PLUGINDIR . '/supersqueeze/all.php');
    exit;
    }
}
add_action('template_redirect', 'my_template');
    
respondido por el prettyboymp 22.02.2011 - 01:48

Lea otras preguntas en las etiquetas