web-dev-qa-db-fra.com

Ajouter du HTML à la balise <post> unique

Si j'ai développé une page HTML séparée que je souhaite inclure dans mon site Wordpress, quel est le meilleur moyen de l'inclure? Dans ce cas, il faut une bibliothèque javascript ou une feuille de style qui, par défaut, ne soit pas insérée dans le thème Wordpress, mais doit être insérée dans la balise.

Je connais les solutions suivantes:

iFrames:

  • Pour correspondre au style du site, il faudrait inclure chaque css du thème dans l'en-tête iframe.
  • Si le thème est mis à jour avec une autre feuille de style de script, la maintenance ne sera pas mise à jour dans l'iframe, la maintenance pourrait s'avérer ardue.

Éditer le thème:

Je pourrais ajouter aux différents fichiers de thèmes le long des lignes:

is_single( 'page1' )
add_action( 'wp_head', 'extra_stuff' )

Pour chaque article/page que je crée ou modifie, je devrai modifier les fichiers de thème en conséquence.

Idéalement, j'aimerais pouvoir le faire depuis l'éditeur de publication

Y at-il des plugins qui accomplissent cela?

1
stanton119

Pour ce genre de situation, vous pouvez créer un template personnalisé pour votre page, ainsi qu'un en-tête spécifique, par exemple:

  • template-custompage.php (votre modèle de page)
  • header-custompage.php (votre en-tête personnalisé, où vous appelez vos CSS et scripts personnalisés)

Dans template-custompage.php, vous appelez votre en-tête personnalisé avec:

get_header( 'custompage' );

Créez ensuite votre page comme vous le feriez normalement dans l'éditeur Wordpress, puis choisissez votre modèle de page personnalisé dans le bloc d'attributs de page.

1
mike23

J'ai trouvé la meilleure solution consistait à ajouter un champ personnalisé, head, puis à créer un plug-in court pour ajouter le contenu à la balise head:

add_action('wp_head', 'add_HTML_head');
function add_HTML_head(){
    global $post;
    if(!empty($post)){
        // get custom field for 'head'
        $headHTML = get_post_meta($post->ID, 'head', true);
        if(!empty($headHTML)){
            echo $headHTML;
        }
    }
}

Je l'ai emballé dans un simple plugin .

1
stanton119