web-dev-qa-db-fra.com

Fonctions functions.php partagées sur plusieurs sites Web WordPress

Je me retrouve à utiliser plusieurs des mêmes extraits de code pour mon fichier functions.php dans les nouveaux sites Web.

Existe-t-il une méthode que je peux utiliser pour créer quelques différents fichiers functions.php partagés à utiliser sur mes sites Web? Je ne fais pas référence à une installation WPMU, mais à des installations complètement séparées de WordPress avec des bases de données distinctes, éventuellement sur des hôtes différents.

Par exemple, s'il y a des fonctions que je veux ajouter à un site spécifique, je les ajouterais simplement au functions.php du site, mais je disposerais également d'un fichier functions.php partagé pour tous mes sites à auteurs multiples et d'un pour tous mes sites à auteur unique. Une autre situation serait de regrouper toutes les fonctions similaires dans des fichiers functions.php distincts.

METTRE À JOUR

Voici une mise à jour avec un exemple que j'ai trouvé dans le functions.php d'un thème premium. C'est le seul code du functions.php, donc je suppose que toutes les fonctions sont extraites d'autres fichiers.

$themename = 'CoolTheme';
$shortname = 'cooltheme';

include_once TEMPLATEPATH.'/cool_framework/plugins/pagination.php';
include_once TEMPLATEPATH.'/cool_framework/plugins/cool_widgets.php';
include_once TEMPLATEPATH.'/cool_framework/plugins/sidebar_generator.php';
include_once TEMPLATEPATH.'/cool_framework/cool_comments.php';
include_once TEMPLATEPATH.'/cool_framework/cool_functions.php';
include_once TEMPLATEPATH.'/cool_framework/cool_navigation.php';
include_once TEMPLATEPATH.'/cool_framework/cool_panel/cool_panel.php';
include_once TEMPLATEPATH.'/cool_framework/cool_shortcodes/cool_shortcodes.php';

Est-ce que quelque chose comme ceci est possible, excepté l'appel des fonctions d'un domaine ou d'un stockage en nuage complètement séparé? Si oui, quels sont les problèmes, le cas échéant, je peux m'attendre?

4
Travis Pflanz

Si vos fonctions peuvent aller dans un seul fichier (pas d’image, ni de fichiers js/css liés), vous pouvez les ajouter au fichier mu-plugin. Voir la page Doit utiliser des plugins sur Codex pour plus d'informations.

EXEMPLE:

<?php
/*
Plugin Name: CommonCodes
Plugin URI: http://you.com/
Description: A common use file
Version: 1.0
Author: You
Author URI: http://you.com/
*/

function remove_dashboard_widgets() {
    global $wp_meta_boxes;
    unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']);
    unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']);
    unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']);
    unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']);
    unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_drafts']);
    unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']);
    unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);
    unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);
}
if (!current_user_can('manage_options')) {
    add_action('wp_dashboard_setup', 'remove_dashboard_widgets' );
}

function all_settings_link() {
    add_options_page(__('All Settings'), __('All Settings'), 'administrator', 'options.php');
}
    add_action('admin_menu', 'all_settings_link');

?>

Il vous suffirait alors de l'enregistrer sous le nom commonfunctions.php ou autre. Créez un dossier dans le répertoire wp-content appelé mu-plugins et placez le fichier unique PHP dans ce dossier. Il s'activera automatiquement et ne pourra pas être supprimé de la zone WP-Admin.

Tous les problèmes auxquels vous pourriez être confronté dépendent des plug-ins ou des thèmes susceptibles de réutiliser les mêmes fonctions, ce qui entraîne un conflit.

6
Jeremy Jared

Je voudrais jeter un oeil à cet article sur la façon de mettre à jour un plugin auto-hébergé. Cela vous permettrait de configurer votre functions.php en tant que plug-in de fonctionnalité, puis de l'héberger en un seul endroit et d'envoyer les mises à jour à tous les sites. Vous devrez toujours aller sur chaque site et le mettre à jour, mais j'imagine que cela constituerait toujours une amélioration par rapport à votre configuration actuelle.

Vous pouvez également envisager de créer un ensemble d’options pour le plug-in qui active et désactive des ensembles de fonctions. Ensuite, vous pouvez n’avoir qu’un seul plug-in avec toutes vos fonctions que vous activez et désactivez ensuite sur chaque site.

=====

EDIT: Il se trouve qu’il existe même un plugin pour aider à gérer les plugins d’auto-hébergement. Ca s'appelle ... attendez ... Plugins auto-hébergés . Je ne l'ai pas utilisé, je ne peux donc pas en témoigner, mais cela pourrait valoir la peine de vérifier si le tutoriel ci-dessus ne fonctionne pas.

4
mrwweb