WordPress: vytvářejte snadno podstránky aktuální stránky

Pakliže používáte WordPress jako CMS pro firemní web, pak nejspíše používáte Stránky, které mají na rozdíl od Příspěvků hierarchii. Běžně tak potřebujete vytvořit podstránku k nějaké stránce. Je to triviální, prostě při vytváření stránky vyberete v pravém menu Nadřazenou stránku a hotovo.

Jenže když těch stránek máte hodně, musíte tu nadřazenou hledat, navíc mnoho lidí má jiný pracovní a myšlenkový postup – jsou na webu na té nadřazené stránce a řeknou „ha, k téhle stránce by se hodila nějaká podstránka“, nebo prostě vytváří nový web a pracují prostě stylem „Teď vytvořím Úvodní stránku. Publikuju jí. Zkontroluji. A teď k ní potřebuju podstránku“.

Proto jsem pro vás připravil drobný kód pro vaše functions.php, které přidá do záložky Akce ve vaší Navigační liště (Admin Bar) volbu „Přidat podstránku“. Po kliknutí na tento odkaz se vám otevře okno pro založení nové stránky a automaticky předvyplní Nadřazenou stránku tou, ze které jste přišli.

// přidá odkazy do admin baru
function kapler_admin_bar_menu($wp_admin_bar) {
global $post;
 // jen když jsem na Stránce a aktuální uživatel má právo editovat stránky a má právo k té nadřazené stránce
 if (is_page() && current_user_can( 'edit_page', $post->ID )) {
 $args = array(
 'id' => 'add_subpage',
 'title' => _('Vytvořit podstránku'), 
 'href' => admin_url( 'post-new.php?post_type=page&parent='.$post->ID ),
 'parent' => 'new-content'
 );
 $wp_admin_bar->add_node($args);
 }
}
add_action('admin_bar_menu', 'kapler_admin_bar_menu');

// když je editační stránka page s předvyplněným parent, nastaví jej
function kapler_admin_head() 
{
 // vkládat jen u Stránek a jen když je vyplněný parametr parent
 if( !empty($_GET['post_type']) && $_GET['post_type']=='page' && !empty( $_GET['parent'] ) ) {
 ?>
 <script type="text/javascript">
 jQuery(document).ready( function($) 
 {
 $('#parent_id').val(<?php echo $_GET['parent']; ?>);
 });
 </script>
 <?php
 }
}
add_action( 'admin_head-post-new.php', 'kapler_admin_head' );

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *