WordPress : Supprimer une page publiée spécifique lorsque le thème est désactivé
Je travaille sur le développement d’un thème qui crée automatiquement une page sur l’activation du thème. Mais le problème si lorsque le thème est activé et activé à nouveau, il recrée la page.
est-il possible de vérifier si la page est déjà disponible/publiée, de ne pas créer ou peut-être de supprimer la page lors du changement de thème/de la désactivation ?
Voici le code que j’utilise pour créer une nouvelle page sur l’activation du thème :
if (is_admin() && isset($_GET['activated'] ) && $pagenow == "themes.php" ) {
global $wpdb;
$the_page_title = 'Homepage Template';
$the_page_name = 'homepage-1';
//$page_check = get_page_by_title('Page Title');
$page_check_id = $page_check->ID;
$the_page = get_page_by_title( $the_page_title );
// Create post object
$new_page = array(
'post_type' => 'page',
'post_title' => 'Homepage Template',
'post_status' => 'publish',
'post_author' => 1,
);
if(!isset($page_check_id)){
wp_insert_post($new_page);
$new_page_data = get_page_by_title($the_page_title);
$new_page_id = $new_page_data->ID;
update_post_meta($new_page_id, '_wp_page_template','homepage-1.php');
}
}
Mon objectif principal est d’offrir aux utilisateurs plusieurs modèles/mises en page de page d’accueil qu’ils peuvent basculer à partir du panneau d’administration du thème ou des paramètres -> lecture. Donc, s’il y a une meilleure option, n’hésitez pas à suggérer !
Solution n°1 trouvée
Vous appelez get_page_by_title( $page_title )
déjà. Utilise le!
if ( ! get_page_by_title(
_x( 'Homepage Template', 'home page title', 'your_theme_textdomain' )
)
)
{
// create the page
}
Ne supprimez pas le contenu de l’utilisateur lors de la désactivation du thème. L’utilisateur a peut-être mis beaucoup d’énergie dans cette page, et peut-être qu’il n’est pas au courant que vous supprimez son travail.
Mais je ne créerais même pas cette page. Utilisez un home.php
pour les articles de blog les plus récents et un front-page.php
pour la page d’accueil. Personnalisez cela et laissez l’utilisateur choisir n’importe quelle page.
Maintenant, lorsque vos utilisateurs renomment la page et essaient un autre thème avant de revenir en arrière, vous n’avez plus besoin de recréer la page avec juste un titre différent.
Mise à jour en réponse à votre question mise à jour
Créez les modèles de la page d’accueil dans un répertoire séparé, par exemple /front-templates
. Proposez ensuite ces modèles en tant que choix dans le personnalisateur et enregistrez le nom du modèle dans les options de thème.
Dans votre front-page.php
chèque pour l’option et incluez le modèle correspondant.
Exemple de code
$template = get_theme_mod( 'front-page-template', 'default' );
locate_template( "front-templates/$template.php", TRUE, TRUE );
Maintenant, vous n’avez plus besoin de créer une nouvelle page, car front-page.php
elle sera automatiquement utilisée sur la page d’accueil.
0 commentaire