2011-07-18 11 views
6

Czy istnieje sposób ograniczenia następującego kodu, który dodałem do pliku functions.php, aby dotyczył on tylko jednej kategorii wordpress?Stosowanie kodu w Wordpress functions.php tylko do jednej kategorii

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

Próbowałem to, ale nie wydaje się działać:

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

Należy również dodać, że rozwiązał ten problem poprzez umieszczenie kodu bezpośrednio w konkretnym szablonie kategorii, ale I” d wolę zachować filtr w moim pliku funkcji.

Dzięki!

+1

Myślę, że należałoby dodać go do szablonu single.php zamiast do kategorii. Najlepiej byłoby dodać go do pliku nagłówkowego, aby dotyczył wszystkich stron. Nie wiem, dlaczego to nie działa w functions.php – Tarun

+0

, gdzie uruchamiasz to? po init lub wcześniej? – Tarun

Odpowiedz

0

Your functions.php nie ma informacji o aktualnym żądaniu, takim jak strony indeksu i kategorii. Aby to działało kodu w functions.php, będziesz musiał chwycić surowe vars serwera i analizowania przez nich załadować funkcjonalność wp_query które są istotne dla bieżącej URL:

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

Kiedy już, że identyfikator może wykonać pętlę zapytania i wyzwolić filtr na podstawie kategorii.

1

Wierzę, że będziesz chciał podłączyć się do pre_get_postsaction. Wystrzeliwuje się zaraz po przeanalizowaniu ciągu zapytania. Niektóre, ale nie wszystkie warunki warunkowe są skonfigurowane. Możesz sprawdzić, czy in_category() jest jedną z nich, ale nie sądzę, aby miało to znaczenie. Czemu? Cieszę się, że zapytałeś.

Haczyk przejdzie do obiektu zapytania, który ma właściwość category_name. Wszystko, co musisz zrobić, to sprawdzić, czy ma swoją kategorię, a jeśli tak, to zwolnij swój filtr. Coś takiego:

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

To jest całkowicie nieprzetestowane. Ale ponieważ wydaje się, że wiesz, co robisz, powinno wystarczyć, abyś znalazł się na właściwej ścieżce.

+0

Twój kod ma błąd "Uwaga: Niezdefiniowana właściwość: WP_Query :: $ category_name" –

+0

Odpowiedź jest bardziej ilustracją schematu OP, który powinien być użyty do wykonania jego zadania. Zauważyłem, że nie zostało to przetestowane i wyraźnie należy najpierw przeprowadzić inne kontrole, takie jak is_set(). Nie widząc twojego kodu, nie wiem, co robisz dobrze, czy źle. Możesz spróbować utworzyć nowe pytanie, jeśli masz z tym problemy. Ponadto, zgodnie z dokumentami WP, "pre_get_posts działa przed ustawieniem WP_Query". – Shelton

Powiązane problemy