1

私はワードプレスのウェブサイトに取り組んでいます。すべての訪問者が連絡先フォームに正式に記入すると、ダウンロードを提供したいと考えています。お問い合わせフォームからの場合を除き、ダウンロード リンクへのその他のアクセスを制限したいと考えています。

現在、on_sent_ok: "location = ' http://example.com/downloads ';"を使用して、送信時にユーザーをダウンロード ページにリダイレクトできます。Contact Form 7 インターフェイスの高度なオプションで。

ただし、フォームを送信していないときでも同じページにアクセスできます。フォームを使用する場合を除いて、人々がこのページにアクセスできないようにする方法はありますか? この目的のために、Wordpress フレームワーク内で contact form 7 プラグインを使用したいと考えています。

4

2 に答える 2

2

間違いなく可能です。個人的には、無料のものをダウンロードするために連絡先情報を共有させられるのは嫌いなので、それを任意にすることを強くお勧めします。

しかし、あなたは本当にそれをやりたいので、URL にある種の ?submit=success サフィックスを設定するだけです。それが存在する場合は、ダウンロード リンクを表示します。

functions.phpこれをファイルに追加して機能させることができます(編集: ショートコードを他のダウンロードに再利用できるように調整しました。):

// Get current page URL and clean it up
$url_current  = @( $_SERVER["HTTPS"] != 'on' ) ? 'http://'.$_SERVER["SERVER_NAME"] :  'https://'.$_SERVER["SERVER_NAME"];
$url_current .= ( $_SERVER["SERVER_PORT"] !== 80 ) ? ":".$_SERVER["SERVER_PORT"] : "";
$url_current .= $_SERVER["REQUEST_URI"];
$url_clean = array_shift( explode('?', $url_current) );
$url_success = $url_clean . '?submit=success';

function free_download( $atts ) {

    // Get variables
    extract(shortcode_atts(array(  
        'contact_form' => '',
        'download_link' => ''
    ), $atts));

    // Modify variables
    $contact_form = do_shortcode('[' . $contact_form . ']');

    if ($url_current == $url_success) {
        return $download_link;
    }
    else {
        return $contact_form;
    }
}
add_shortcode('free_download', 'free_download');

Contact Form 7 の設定で、次の手順に従って適切なリダイレクト リンクを設定します (同じページですが、?submit=success サフィックスが付いています): http://wordpress.org/support/topic/plugin-contact-form-7-フォームの後にページへのリダイレクトが成功しました

WP コンテンツ エディターで、ショートコードを使用し[free_download contact_form='contact-form-7 id="12345" title="whatever"' download_link='<p>Some message here. <a href="http://YOUR-DOWNLOAD-LINK.pdf">Download</a></p>']てコンテンツを埋め込みます。

このアプローチでは、?submit=success リンクを使用する誰かが引き続きコンテンツにアクセスできるため、コンテンツは 100% 保護されているわけではありませんが、平均的な訪問者がアクセスできないように隠されています。

于 2013-06-22T21:05:32.973 に答える
0

私が考えることができる最初の解決策は、on_sent_ok のアクション内に Cookie を設定することです。ダウンロード ページには独自のテンプレート ページがあり、Cookie が設定されているかどうかを確認します (get_headerまたは他の出力が送信される前に)。Cookie が設定されていない場合、フォームに入力しないとダウンロードできないことを示すメッセージを表示するか、フォームのあるページにリダイレクトすることができます。Cookie が設定されている場合は、ダウンロードを利用できるようにします。理想的には、ダウンロード ファイルは Web ルートの外にあり、readfile.

于 2013-06-22T20:20:53.017 に答える