如何在页面中显示Jetpack订阅表格?

时间:2012-08-05 作者:Yaakov Ellis

在Jetpack插件中,订阅模块可以按照以下说明包含在您的博客中:

要使用订阅小部件,请转到外观→ 小部件。将标有“博客订阅(Jetpack)”的小部件拖到一个侧栏中,然后进行配置。

我有兴趣在我的网站的主页的主要部分包含订阅表单。是否有某种快捷码或其他方式可以轻松地将订阅表单包含在页面内容中?或者要做到这一点,我需要定义一个新的侧栏,将订阅小部件放在侧栏中,然后他们制作一个自定义模板,在这个页面中包含这个新的侧栏(相当麻烦的练习)?

3 个回复
SO网友:amit

目前jetpack提供了将订阅嵌入边栏小部件的唯一方法。注册一个新的侧边栏会是一个更好的主意,这不会超过几秒钟。

步骤1-为jetpack注册一个侧栏,只需在主题的functions.php 文件

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>\'
) );
步骤2-您希望表单显示在哪里

现在将以下代码放置在需要表单的位置。在主题的任何地方,您都可以将此代码放在<?php the_content(); ?> 所以它只会显示你的页面/帖子内容。

<?php dynamic_sidebar( \'jetpack-in-page\' ); ?>
第3步-完成现在将小部件拖放到JetPack in page 侧栏和表单将显示在页面中。然而,这个小部件是专门为侧边栏设计的,所以您可能需要进行一些样式设计,以使它在整个页面上看起来更好。

参考-register_sidebar(); (Wordpress Codex)

SO网友:Rarst

您可以使用跳过侧栏步骤the_widget() 模板中的函数显示所需小部件的实例。

SO网友:N Atta Kusi Adusei

尝试以下操作:(在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\' );
安装并激活Jetpack后,在任何页面或任何文本小部件上应用快捷码,从而:

[itp_email_subscription title="Some Title" desc="Some description here" placeholder="Placeholder" button="Button"]
完成!但未经测试。如果有任何bug,请告诉我。快乐编码:-)

结束

相关推荐

page url in shortcode

我有个问题。我正在使用自定义的快捷码来获取url。如果短代码在帖子中,那么它将获取帖子url。当我在分类列表中打开帖子时,这个帖子的快捷码工作正常。extract(shortcode_atts(array( \'gurl\' => get_permalink(), ), $atts)); 但当我尝试在小部件文本中添加此短代码时,我得到了最后一个帖子url。请告诉我,当短代码位于小部件中时,我如何获取帖子url。