2011-07-18 8 views
6

¿Hay alguna manera de limitar el siguiente código que he agregado a mi archivo functions.php para que solo se aplique a una sola categoría de wordpress?Aplicando el código en Wordpress functions.php a una sola categoría

<?php remove_filter('the_content', 'wpautop'); ?> 

yo probamos este, pero no parece funcionar:

<?php if (in_category('work')) { remove_filter('the_content', 'wpautop'); } ?> 

También debo añadir que he resuelto este problema colocando el código directamente en la plantilla de categoría específica, pero me d prefiero mantener el filtro en mi archivo de funciones.

Gracias!

+1

Creo que tendrías que agregarlo a single.php en lugar de plantilla de categoría. La mejor manera sería agregarlo a su archivo de encabezado para que se aplique a todas las páginas. No sé por qué no funciona en functions.php – Tarun

+0

¿Dónde está disparando esto? después de init o antes? – Tarun

Respuesta

0

Su functions.php no tiene conocimiento de la solicitud actual, como lo son sus páginas de índice y categoría. Para que esto funcione código en functions.php, que tendrá que tomar las vars servidor primas y analizar a través de ellos para cargar funcionalidad WP_Query que es relevante para la URL actual:

$url = explode('?', 'http://'.$_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]); 
$ID = url_to_postid($url[0]); 

Una vez que tenga esa identificación se puede hacer un bucle de consulta y activar su filtro en función de la categoría.

1

Creo que querrá enganchar en el pre_get_postsaction. Se dispara inmediatamente después de analizar la cadena de consulta. Algunos, pero no todos los condicionales están configurados. Puedes probar si in_category() es uno de ellos, pero no creo que importe. ¿Por qué? Me alegro de que preguntaras.

El gancho le pasará el objeto de consulta, que tiene la propiedad category_name. Todo lo que tienes que hacer es verificar si tiene tu categoría y si es así disparar tu filtro. Algo como esto:

function ns_function_name($wpq){ 
    if($wpq->category_name == 'work'){ 
     remove_filter('the_content', 'wpautop'); 
    } 
} 
add_action('pre_get_posts', 'ns_function_name'); 

Esto no se ha probado. Pero dado que pareces saber lo que estás haciendo, debería ser suficiente para ponerte en el camino correcto.

+0

Su código tiene un error "Aviso: Propiedad indefinida: WP_Query :: $ category_name" –

+0

La respuesta es más una ilustración del patrón que OP debería usar para realizar su tarea. Noté que no se ha probado, y claramente se deben hacer otras comprobaciones, como is_set(). Sin ver tu código, realmente no puedo saber lo que estás haciendo bien o mal. Puede intentar crear una nueva pregunta si tiene problemas con ella. Además, de acuerdo con los documentos de WP, "pre_get_posts se ejecuta antes de que se haya configurado WP_Query". – Shelton

Cuestiones relacionadas