web-dev-qa-db-fra.com

Comment puis-je afficher le formulaire d'abonnement Jetpack dans une page?

Dans le plugin Jetpack, le module des abonnements peut être inclus dans votre blog en suivant ces instructions:

Pour utiliser le widget Abonnements, accédez à Apparence → Widgets. Faites glisser le widget intitulé "Blog Subscriptions (Jetpack)" dans l'une de vos barres latérales et configurez-le.

Je suis intéressé à inclure le formulaire d'abonnement sur une page de mon site, dans la section principale de la page. Existe-t-il une sorte de shortcode ou un autre moyen permettant d'inclure facilement le formulaire d'abonnement dans le contenu de ma page? Pour ce faire, aurais-je besoin de définir une nouvelle barre latérale, de placer le widget Abonnements dans la barre latérale et de créer un modèle personnalisé incluant cette nouvelle barre latérale dans cette page (exercice assez fastidieux)?

2
Yaakov Ellis

Vous pouvez ignorer l'étape de la barre latérale en utilisant the_widget() function dans le modèle pour afficher l'instance du widget dont vous avez besoin.

2
Rarst

À l'heure actuelle, jetpack fournit le seul moyen d'intégrer des abonnements en tant que widget de barre latérale. Enregistrer une nouvelle barre latérale serait une meilleure idée de le faire, et cela ne prendra pas plus de quelques secondes.

Étape 1 - Enregistrer une barre latérale pour jetpack

Il suffit de déposer ce code quelque part dans le fichier functions.php de votre thème.

register_sidebar( array(
    'name' => 'JetPack in page',
    'id' => 'jetpack-in-page',
    'before_widget' => '<div id="jetpack">',
    'after_widget' => '</div>',
    'before_title' => '<h3>',
    'after_title' => '</h3>'
) );

Étape 2 - Où voulez-vous que le formulaire apparaisse?

Maintenant, placez le code suivant où vous voulez le formulaire. N'importe où dans le thème, vous pouvez mettre ce code juste en dessous de la <?php the_content(); ?>. Il montrera donc juste en dessous de votre contenu de page/publication.

<?php dynamic_sidebar( 'jetpack-in-page' ); ?>

Étape 3 - Votre fait!

Maintenant, faites glisser le widget dans la barre latérale JetPack in page et le formulaire s'affichera dans la page. Cependant, le widget étant spécialement conçu pour les barres latérales, vous devrez peut-être créer un style pour le rendre plus beau en pleine page.

Référence - register_sidebar(); (Codex Wordpress)

2
amit

Essayez ce qui suit: (Copiez et collez le code ci-dessous dans le fichier functions.php)

// Get page url >> webcheatsheet.com/php/get_current_page_url.php
function itp_current_page_url() {
$page_url = 'http';
if( isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on" ) { $page_url .= "s" ;}
$page_url .= "://";
if( $_SERVER["SERVER_PORT"] != "80" ) {
    $page_url .=         $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
    $page_url .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}

return $page_url;
} // end itp_current_page_url

// Jetpack subscription form shortcode by http://www.itechplus.org
function itp_jetpack_subscription_form_shortcode( $atts, $content = '', $code = '' ) {
extract( shortcode_atts( array(
    'title' => 'Email Subscription',
    'desc' => 'Enter your email address to subscribe to this website and receive notifications of new articles by email.',
    'button' => 'Subscribe',
    'placeholder' => 'Email Address',
), $atts ) );

global $post;

// Build current page url
if( is_home() || is_front_page() ) {
    $url = home_url('/');
} elseif( is_singular() ) {
    $url = get_permalink($post->ID);
} else {
    $url = itp_current_page_url();
}

$jetpack_subscribe = '';

// Build jetpack subscription form
if( $title != '' ) {
    $jetpack_subscribe .= '<h3 class="widget-title">
        <label for="subscribe-field">' . $title . '</label>
    </h3>';
}
$jetpack_subscribe .= '<form id="subscribe-blog-blog_subscription-' . time() . '" accept-charset="' . get_bloginfo( 'charset' ) . '" method="post" action="">';
    if( $desc != '' ) {
        $jetpack_subscribe .= '<p>' . $desc . '</p>';
    }
    $jetpack_subscribe .= '<p>
        <input id="subscribe-field" class="input email" type="email" placeholder="'. $placeholder .'" onblur="if( this.value == \'\' ) { this.value = \'' . $placeholder . '\'; }" onclick="if ( this.value == \'' . $placeholder . '\' ) { this.value = \'\'; }" value="' . $placeholder . '" style="width: 95%; padding: 1px 2px" name="email" />
    </p>
    <p>
        <input type="hidden" value="subscribe" name="action" />
        <input type="hidden" value="' . $url . '" name="source" />
        <input type="hidden" value="widget" name="sub-type">
        <input type="hidden" value="blog_subscription-' . time() . '" name="redirect_fragment" />
        <input type="submit" class="input subbmit" name="jetpack_subscriptions_widget" value="' . $button . '" />
    </p>
</form>';

return $jetpack_subscribe;
}
add_shortcode( 'itp_email_subscription', 'itp_jetpack_subscription_form_shortcode' );

Avec Jetpack installé et activé, appliquez un shortcode sur n’importe quelle page ou dans n’importe quel widget texte:

[itp_email_subscription title="Some Title" desc="Some description here" placeholder="Placeholder" button="Button"]

Terminé! Pas testé cependant. laissez-moi savoir s'il y a des bugs. Bonne codage :-)

0
N Atta Kusi Adusei