W trakcie tworzenia w WordPressie hierarchicznej struktury stron (strona nadrzędna i wiele stron podrzędnych) natknąłem się na następujący problem: nie można ustawić strony będącej szkicem lub stroną prywatną jako rodzica dla innej strony. Oznacza to, że strona nadrzędna musi zostać opublikowana żeby można było powiązać z nią strony podrzędne. Jest to o tyle problematyczne, że tworząc taką strukturę nie chcemy udostępniać publicznie żadnej z jej stron zanim całość nie zostanie skończona. Nawet jeśli nie zamieścimy nigdzie linku do naszych stron, to znajdą się one w mapie naszej witryny. Można oczywiście ręcznie blokować umieszczenie każdej ze stron w mapie (np. jeśli korzystamy z wtyczki WordPress SEO), ale późniejsze ich odblokowanie jest co najmniej mało wygodne. Na szczęście istnieje znacznie prostsze rozwiązanie tego problemu.
Temat braku możliwości ustawiania szkiców i stron prywatnych jako stron nadrzędnych jest znany twórcom WordPressa od kilku lat – zgłoszenie problemu zostało utworzone w grudniu 2008 roku. Rozwiązanie jest gotowe, ale zostało przypisane do „przyszłego wydania” (czyli będzie wprowadzone, ale nie wiadomo kiedy). W jednym z komentarzy do wspomnianego zgłoszenia znajduje się rozwiązanie, które nie wymaga modyfikacji kodu WordPressa – wystarczy do pliku functions.php
naszego szablonu lub do pliku wtyczki dodać następujący kod:
function show_all_pages_in_parent_pages_dropdown($args) { $args['post_status'] = array('publish', 'draft', 'pending', 'private'); return $args; } add_filter('quick_edit_dropdown_pages_args', 'show_all_pages_in_parent_pages_dropdown'); add_filter('page_attributes_dropdown_pages_args', 'show_all_pages_in_parent_pages_dropdown');
I to wszystko – od tej pory na liście stron możliwych do ustawienia jako rodzica znajdą się również szkice i strony prywatne.