Scritto da Davide Bia in PHP 30 settembre 2008
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> </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.'&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.
Scritto da Davide Bia in PHP, Sistemi Windows 25 settembre 2007
WP-Cache è un ottimo plug-in per velocizzare Wordpress, effettuando la cache delle pagine già servite in precedenza. Purtroppo non è ben progettato per IIS: dopo averlo installato, la pagina di amministrazione risulterà bianca, quando invece dovrebbe auto-configurarsi e mostrare delle opzioni.
Per renderlo funzionante su Windows ed in particolare IIS, è necessario effettuare alcune modifiche ai sorgenti e successivamente procedere alla configurazione manuale.
Modifiche ai sorgenti
Nel file /wp-content/plugins/wp-cache/wp-cache.php, dalla riga 491, la funzione wp_cache_check_link utilizza dei link simbolici.
function wp_cache_check_link() {
global $wp_cache_link, $wp_cache_file;
if ( basename(@readlink($wp_cache_link)) != basename($wp_cache_file)) {
@unlink($wp_cache_link);
if (!@symlink ($wp_cache_file, $wp_cache_link)) {
echo "<code>advanced-cache.php</code> link does not exist<br />";
echo "Create it by executing: <br /><code>ln -s $wp_cache_file $wp_cache_link</code><br /> in your server<br />";
return false;
}
}
return true;
}
I link simbolici non sono implementati in Windows, e vanno quindi rimosse le funzioni symlink e readlink. Consiglio di effettuare un semplice controllo sull’esistenza del file advanced-cache.php.
function wp_cache_check_link() {
global $wp_cache_link, $wp_cache_file;
if(!file_exists($wp_cache_link))
{
echo "<code>advanced-cache.php</code> link does not exist<br />";
echo "Create it by executing: <br /><code>ln -s $wp_cache_file $wp_cache_link</code><br /> in your server<br />";
return false;
}
return true;
}
Sempre nello stesso file, si utilizza la costante __FILE__
add_options_page('WP-Cache Manager', 'WP-Cache', 5, __FILE__, 'wp_cache_manager');
Questo può causare alcuni problemi con le barre rovesce dei percorsi, per cui consiglio di fornire solo il nome del file, dato che Wordpress è in grado di ricostruire comunque il percorso corretto del plug-in.
add_options_page('WP-Cache Manager', 'WP-Cache', 5, basename(__FILE__), 'wp_cache_manager');
Nel file /wp-content/plugins/wp-cache/wp-cache-phase1.php, alla riga 23, si fa uso della variabile $_SERVER['REQUEST_URI'] che purtroppo in Windows contiene solo parte del permalink.
$key = md5($_SERVER['SERVER_NAME'].preg_replace(’/#.*$/’, ”, $_SERVER['REQUEST_URI']).wp_cache_get_cookies_values());
Il valore corretto lo otteniamo concatenando $_SERVER['SCRIPT_NAME'] e $_SERVER['PATH_INFO']
$key = md5($_SERVER['SERVER_NAME'].preg_replace(’/#.*$/’, ”, $_SERVER['SCRIPT_NAME'].$_SERVER['PATH_INFO']).wp_cache_get_cookies_values());
Per lo stesso motivo è da sistemare il file /wp-content/plugins/wp-cache/wp-cache.php, sostituendo tutte le occorrenze di $_SERVER['REQUEST_URI'].
echo '
In questo caso utilizziamo una soluzione standard, usata anche in altri plug-in, per indicare la pagina corrente.
echo '
L’operazione deve essere ripetuta su tutto il file, alle righe 253, 272, 305, 329, 351, 556, 590, 605 e 613.
Configurazione manuale
Dopo aver eseguito le modifiche ai sorgenti, è possibile procedere alla configurazione del plug-in
- Copiare rinominandolo il file /wp-content/plugins/wp-cache/wp-cache-phase1.php in /wp-content/advanced-cache.php
- Creare la cartella /wp-content/plugins/cache
- Concedere i diritti di scrittura a IIS alla cartella /wp-content. Dopo la configurazione, sono sufficienti i permessi per la cartella /wp-content/plugins/cache e /wp-content/plugins/wp-cache ed il file /wp-content/wp-cache-config.php.
- Modificare il file wp-config.php aggiungendo una costante
define('WP_CACHE', true);
A questo punto, per far entrare in funzione il plug-in, non resta che accedere alla pagina di amministrazione, dove dovrebbero essere comparse tutte le opzioni di configurazione, ed attivare la cache con l’apposito pulsante.
Fonti di riferimento