[wp-hackers] Handling cookies with wp-plugin and wp-supercache

Donncha O Caoimh donncha at linux.ie
Mon Nov 2 13:14:35 UTC 2009


Hey Gerrit,

Instead of modifying wp-cache-phase1.php you can use one of the 
cacheactions. You'll be able to add a supercache plugin in the 
wp-super-cache/plugins folder that uses that hook. You should probably 
move the plugins folder out of that directory as the next time you 
update it'll delete your plugin.

Doing this will make it easier to upgrade the plugin.

I'd switch to half-on mode. It's almost as fast 99% of the time as full 
mode and more flexible.

Donncha

Gerrit Wessendorf wrote:
> Hi William,
> 
> Yes, it makes perfect sense. I was afraid Javascript might be the answer to
> my problem, but I will try the other options first.
> Thanks for the suggestions!
> Gerrit
> 
> 
> 
> On Sun, Nov 1, 2009 at 3:53 PM, William Canino <
> william.canino at googlemail.com> wrote:
> 
>>> My test function doesn't seem to be able to update or delete the cookie
>> once
>>> wp-supercache is activated. If I visit the site by typing in the url
>>> directly, my code will set a value indicating it's a direct visit. If I
>> then
>>> choose to remove and spoof a new referrer the directvisit-value stays and
>>> remains unchanged. If I manually delete the cookie from the browser's
>> cookie
>>> list I'm able to simulate another referrer, but once the cookie is set,
>> it
>>> stays there until I manually remove it again. This makes it a bit
>> difficult
>>> to test different scenarios, and I'm not able to tell if the site would
>> set
>>> the proper values in a real-world situation.
>> Plugins/Cookies and Super Cache can work together with a little extra
>> planning.
>>
>> 1. "Full on" super-cached pages -- that is, those served from the
>> wp-content/cache/sitename/path/index.html -- cannot set, remove or
>> change cookies directly because the pages are served directly by
>> Apache and never loaded from WordPress at all.  Alternatives: (1) The
>> Header directive in Apache or (2) set/remove the cookie in Javascript.
>>
>> 2. "Half on" cached pages can set, remove or change cookies directly
>> but you have to edit wp-cache-phase1.php -- before line 110 -- because
>> the pages are served directly by wp-super-cache without running
>> plugins at all.  See the ff. code.  Alternatives: (1) Load before
>> Super Cache does or (2) set/remove the cookie in Javascript.
>>
>> header( 'WP-Super-Cache: WP-Cache' );
>> // <-- add your Cookie-setting PHP here. Go nuts.
>> if ( $meta[ 'dynamic' ] ) {
>>        include($cache_file);
>> } else {
>>        readfile( $cache_file );
>> }
>> die();
>>
>> Does this make sense? You may need to state your problem more
>> succinctly because I don't understand.
>>
>> W
>>
>>
>>
>> 2009/11/1 Gerrit Wessendorf <celeph at gmail.com>:
>>> Hi,
>>> I hope this isn't too offtopic, but I was hoping someone might be able to
>>> give me a hint or idea. :)
>>>
>>> The situation:
>>> I wrote a simple plugin for wordpress that reads the http-referrer and
>> sets
>>> a cookie with info about searchengine or email referrals. This cookie is
>>> available in the entire session until the user closes the browser. The
>> value
>>> can be used with a function in template files, or shortcodes in
>> pages/posts.
>>> With Firefox plugin refspoof I simulate different referrers.
>>>
>>> This all works great both as wp-plugin and outside of wordpress as
>> included
>>> object.
>>>
>>> I installed wp-supercache, added my cookiename to supercache's rewrite
>> rules
>>> in .htaccess,
>>>
>>> [...]
>>> RewriteCond %{REQUEST_URI} !^.*[^/]$
>>> RewriteCond %{REQUEST_URI} !^.*//.*$
>>> RewriteCond %{REQUEST_METHOD} !POST
>>> RewriteCond %{QUERY_STRING} !.*=.*
>>> RewriteCond %{HTTP:Cookie}
>>> !^.*(comment_author_|wordpress_logged_in|wp-postpass_|MYCOOKIENAME).*$
>>> [...]
>>>
>>> and I used the following for my test markup:
>>>
>>> <!-- mfunc AgoraCapture::html() -->
>>> <?php AgoraCapture::html(); ?>
>>> <!-- /mfunc-->
>>>
>>> The function html() returns some html markup with to display the value(s)
>>> and a link to remove the cookie.
>>>
>>> I also defined some shortcodes which work great without supercache and
>> still
>>> need to be tested with supercache, once I get the html() test working.
>>>
>>> The problem:
>>> My test function doesn't seem to be able to update or delete the cookie
>> once
>>> wp-supercache is activated. If I visit the site by typing in the url
>>> directly, my code will set a value indicating it's a direct visit. If I
>> then
>>> choose to remove and spoof a new referrer the directvisit-value stays and
>>> remains unchanged. If I manually delete the cookie from the browser's
>> cookie
>>> list I'm able to simulate another referrer, but once the cookie is set,
>> it
>>> stays there until I manually remove it again. This makes it a bit
>> difficult
>>> to test different scenarios, and I'm not able to tell if the site would
>> set
>>> the proper values in a real-world situation.
>>>
>>> I have the feeling it might just be a minor detail I have overlooked, and
>> I
>>> can't imagine I'm the first to handle cookies in a wp-supercache
>>> environment. Have you ever developed a plugin or wordpress extension that
>>> handles cookies and had to work with wp-supercache?
>>>
>>> Any hint is really appreciated.
>>> Many thanks in advance,
>>> Gerrit
>>> _______________________________________________
>>> wp-hackers mailing list
>>> wp-hackers at lists.automattic.com
>>> http://lists.automattic.com/mailman/listinfo/wp-hackers
>>>
>> _______________________________________________
>> wp-hackers mailing list
>> wp-hackers at lists.automattic.com
>> http://lists.automattic.com/mailman/listinfo/wp-hackers
>>
> _______________________________________________
> wp-hackers mailing list
> wp-hackers at lists.automattic.com
> http://lists.automattic.com/mailman/listinfo/wp-hackers
> 
> 


More information about the wp-hackers mailing list