0

顧客のワードプレス サイトを更新しています。プラグインが多すぎてサイトが非常に遅いため、サーバー側のキャッシュを有効にする必要がありました。これについて私にできることは何もなく、プラグインを無効にすることもできません。

プラグインの 1 つは、ユーザーがファイルをダウンロードするために電子メールを入力する必要があります。プラグインが有効な電子メールを検出すると、セッション変数を設定します。その後、ページがリロードされます。そのセッション変数が設定されている場合、サイトには、電子メール フォームの入力フィールドとボタンではなく、ダウンロード ボタンが表示されます。

サーバー側のキャッシュが有効になっているため、この機能は失われます。したがって、私がやりたいことは、代わりに Cookie を設定し、その Cookie クライアント側をチェックして、div の内容を交換することです ( id="download" )。私はJavascriptをあまり使用していないため、これを機能させるのに苦労しています。

PHPで次のようにCookieを設定しました。

setcookie( 'show_download', 1 );

div (動的に生成) の新しいコンテンツを次のように設定しました。

setcookie( 'new_content', '<div class="btn-ss-downloads"><a target="_blank" href="/wp-content/plugins/ss-downloads/services/getfile.php?file=4v-zR6fc6f/9vaROBr/dTJd/Tg/D 0-dT.vBx">Download Series 20 Datasheet</a></div>' );

別の投稿から取得した Javascript で Cookie を読み取る関数があります。

<script type="text/javascript">

    function readCookie(name) {
        var ca = document.cookie.split(';');
        var nameEQ = name + "=";
        for(var i=0; i < ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0)==' ') c = c.substring(1, c.length); //delete spaces
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
        }
        return "";
    }

</script>

正しいと思われる機能は、 を呼び出すことreadCookie( 'show_download' );です。値が 1 の場合、のコンテンツをCookie<div id="download"></div>に保存されているコンテンツと交換します。new_content

ここで提示した部分を考慮して、Javascript でこれを機能させるにはどうすればよいですか? ここで機能する場合は、Wordpress ヘッダーに JavaScript 関数を追加したいだけです。ページがレンダリング/ロードされた後、この関数を実行できたようです。ブラウザやjavascriptの操作順序がよくわかりません。助けてください。

4

2 に答える 2

0

これはあなたが探しているものですか?

(<head>)
<script type='text/javascript'>
    var showDownload = localStorage.getItem("showDownload") //or readCookie()
    if (showDownload == 1) {
        $(document).ready(function(){
            $("div.btn-ss-downloads").html("<a target='_blank'...</a>")
        )};
    }
</script>
(</head>)

http://api.jquery.com/html/およびhttps://developer.mozilla.org/en/DOM/Storage#localStorageを参照してください。

これは、次を使用して含めることができる jQuery を使用します。

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.js"></script>

(これは、jQuery を非常に単純なものに使用することを$(document).readyお勧めする数少ない例の 1 つです。

于 2012-05-12T18:39:03.177 に答える
0

AJAX を検討していないのはなぜですか?

アドレスの有効性を確認し、特定のサーバー アクションを実行してボタンを表示することが要件である場合、AJAX を使用するのに適しているように見えます。

$.post("downloader.php", { eml: mail_id })
    .done(function(data){ 
      if(data != "")
        $("div.btn-ss-downloads").html('<a href="' + data + '">Download</a>');
    });

これは、downloader.php が必要なチェックを行い、ダウンロード URL を返すことを前提としています。このロジック (現在はメイン ページの一部になっているようです) を downloader.php に分割できます。

于 2012-05-13T02:19:58.087 に答える