Aggiungere nel tema di WordPress un link per creare articoli e pagine

Come per il famoso link “Edit this”, tradotto normalmente in “Modifica”, può essere comodo inserire nel proprio tema un link per scrivere un nuovo articolo o una nuova pagina.

Per quanto riguarda gli articoli la soluzione è semplice, e si risolve con qualche linea di codice.

if(current_user_can('publish_posts'))
  echo '<a href="'.get_bloginfo('wpurl').'/wp-admin/post-new.php">'.__('Write article').'</a>';

Per quanto riguarda invece le pagine, può essere interessante utilizzare un codice più complesso, per aggiungere una nuova pagina che abbia la corrente come pagina madre. Per fare ciò è necessario creare una pagina vuota utilizzando la funzione wp_insert_post, passando il parametro post_parent che deve corrispondere all’ID della pagina corrente, quindi redirigere l’utente al back-end.

if(current_user_can('publish_pages'))
{
  $post_parent = $post->ID;
  if($_GET['publish_subpage'])
  {
    $newpost = array(
      'post_content' => '<p>&nbsp;</p>',
      'post_parent' => $post_parent,
      'post_status' => 'draft',
      'post_title' => '',
      'post_type' => 'page'
    );
    $newpost_ID = wp_insert_post($newpost);
    if($newpost_ID)
      header('Location: '.get_bloginfo('wpurl').'/wp-admin/page.php?action=edit&post='.$newpost_ID);
    else header('Location: '.get_permalink($post->ID));
  }
  else
  {
    $publish_link = get_permalink($post->ID);
    if(strpos('?', $publish_link))
      echo '<a href="'.$publish_link.'&amp;publish_subpage=yes">'.__('Write page').'</a>';
    else echo '<a href="'.$publish_link.'?publish_subpage=yes">'.__('Write page').'</a>';
  }
}

Questa soluzione prevede la creazione di un link che richiama la stessa pagina con in aggiunta il parametro publish_subpage=yes.