<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>WP Users Plugin</title>
	<atom:link href="http://wpusersplugin.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://wpusersplugin.com</link>
	<description>User reporting and directories for membership or community sites</description>
	<lastBuildDate>Sun, 12 May 2013 08:12:10 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>amr users plus 2.6 &#8211; default alphabetical filter values sort</title>
		<link>http://wpusersplugin.com/3649/amr-users-plus-2-6-default-alphabetical-filter-values-sort/</link>
		<comments>http://wpusersplugin.com/3649/amr-users-plus-2-6-default-alphabetical-filter-values-sort/#comments</comments>
		<pubDate>Fri, 26 Apr 2013 08:06:26 +0000</pubDate>
		<dc:creator>anmari</dc:creator>
				<category><![CDATA[amr users plus changelog]]></category>

		<guid isPermaLink="false">http://wpusersplugin.com/?p=3649</guid>
		<description><![CDATA[An update is available for amr-users-plus (version 2.6).  It will now by default alphabetically sort the filter values shown in the filter dropdown html. If your site needs some other sort (maybe by filter value count, or translated lables?) then &#8230; <a href="http://wpusersplugin.com/3649/amr-users-plus-2-6-default-alphabetical-filter-values-sort/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>An update is available for <a title="download latest version" href="http://wpusersplugin.com/related-plugins/amr-user-plugin-add-ons/amr-users-plus/#download">amr-users-plus (version 2.6).</a>  It will now by default alphabetically sort the filter values shown in the filter dropdown html.</p>
<p>If your site needs some other sort (maybe by filter value count, or translated lables?) then it is possible to use the <a title="advanced filters" href="http://wpusersplugin.com/related-plugins/amr-user-plugin-add-ons/amr-users-plus/#advanced">filter hooks</a> to rearrange the dropdown array for  your field.  You&#8217;ll need a site specific plugin&#8230; or commission me to code on for you (Fee around $50).</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://wpusersplugin.com/3649/amr-users-plus-2-6-default-alphabetical-filter-values-sort/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Parameters</title>
		<link>http://wpusersplugin.com/3621/parameters/</link>
		<comments>http://wpusersplugin.com/3621/parameters/#comments</comments>
		<pubDate>Fri, 12 Apr 2013 00:16:26 +0000</pubDate>
		<dc:creator>anmari</dc:creator>
				<category><![CDATA[amr users documentation]]></category>

		<guid isPermaLink="false">http://wpusersplugin.com/?p=3621</guid>
		<description><![CDATA[Advanced Shortcode Parameters From version 3.4.4, Parameters are available to overide list settings. If you are not a farly expert wordpress user, please use the settings rather to avoid confusing yourself. The parameters are for more expert users or more &#8230; <a href="http://wpusersplugin.com/3621/parameters/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<h2 id="parameters">Advanced Shortcode Parameters</h2>
<p>From version 3.4.4, Parameters are available to overide list settings. If you are not a farly expert wordpress user, please use the settings rather to avoid confusing yourself. The parameters are for more expert users or more complex requirements. For example they allow one to reuse a single list on multiple pages but with different sort or filtering criteria.</p>
<div id="attachment_3374" class="wp-caption aligncenter" style="width: 643px"><a href="http://wpusersplugin.com/wpusers/wp-content/uploads/2011/04/shortcodeparameters.png"><img class="size-full wp-image-3374" title="shortcodeparameters" alt="Example of shortcode with parameters" src="http://wpusersplugin.com/wpusers/wp-content/uploads/2011/04/shortcodeparameters.png" width="633" height="269" /></a><p class="wp-caption-text">Example of shortcode with parameters</p></div>
<ul>
<li>show_heading=1 (or 0)</li>
<li>show_csv=1 (or 0)</li>
<li>show_refresh=1 (or 0)</li>
<li>show_search=1 (or 0)</li>
<li>rows_perpage=<em>n</em></li>
<li>sort=<em>columnname, </em>can be used with
<ul>
<li>dir=SORT_ASC (or SORT_DESC)</li>
</ul>
</li>
<li>filter=show (or hide to hide the filtered column), must be used with
<ul>
<li>columnname=<em>value</em></li>
</ul>
</li>
<li>(or ONLY when you have a complex multifield column): fieldnamefilter=<em>columnname, must be used with</em>
<ul>
<li>fieldvaluefilter=<em>value</em></li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
<h3>Examples:</h3>
<p>Parameter use opens up some possibilities that have been requested. EG: currently serach only allows one to search the fields that are in the list. One can now add fields to the list, then &#8216;hide&#8217; that field by adding a filter &#8216;*&#8217; (display all with values) to it. Then the search will include that field, but not display it. (Personally I do not recommend this as i think it&#8217;s confusing.)</p>
<pre> filter=hide columnname=*</pre>
<h3 id="special">Special parameters:</h3>
<ul>
<li>start_empty=1,
<ul>
<li>should be used with a search or filteroption to start with a blank list. See example <a title="starting a wordpress user list empty with filtering or search" href="http://directories.wpusersplugin.com/empty-start/">blank user list at start</a></li>
</ul>
</li>
<li>show_randompage=1,
<ul>
<li>start at a random page (when transient html updates). Eg: (using url parameter to test) <a title="Remember the transient html must expire and refresh to see this in action" href="http://directories.wpusersplugin.com/simple-user-list/?show_randompage=1">http://directories.wpusersplugin.com/simple-user-list/?show_randompage=1</a></li>
</ul>
</li>
<li>shuffle=1,
<ul>
<li>shuffle the results on a page. Eg: <a title="test with url parameter, transient html must expire to see it (or refresh)" href="http://directories.wpusersplugin.com/simple-user-list/?shuffle=1">http://directories.wpusersplugin.com/simple-user-list/?shuffle=1</a></li>
</ul>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://wpusersplugin.com/3621/parameters/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>User list with a ranking or scoreboard rank</title>
		<link>http://wpusersplugin.com/3600/user-list-with-a-ranking-or-scoreboard-rank/</link>
		<comments>http://wpusersplugin.com/3600/user-list-with-a-ranking-or-scoreboard-rank/#comments</comments>
		<pubDate>Sun, 24 Feb 2013 12:13:26 +0000</pubDate>
		<dc:creator>anmari</dc:creator>
				<category><![CDATA[amr users documentation]]></category>

		<guid isPermaLink="false">http://wpusersplugin.com/?p=3600</guid>
		<description><![CDATA[Christian asked for what he calls a &#8216;criteria&#8217; number for his member list, and what others may call a scoreboard ranking, top 10 chart listing etc&#8230;.. Basically we want to show the row or list number as displayed.  You can &#8230; <a href="http://wpusersplugin.com/3600/user-list-with-a-ranking-or-scoreboard-rank/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Christian asked for what he calls a <a title="user ranking or scoreboard" href="http://forum.anmari.com/topic.php?id=442" target="_blank">&#8216;criteria&#8217; number for his member list</a>, and what others may call a scoreboard ranking, top 10 chart listing etc&#8230;..</p>
<p>Basically we want to show the row or list number as displayed.  You can use any user or usermeta field generated by another plugin (or further fields if the necessary add-on is available) to determine the ranking (Eg; post counts?  or for gaming sites, perhaps you have some score field? ).  You can list both the score field and the ranking.</p>
<p>Define the sort order in your normal list <a href="http://wpusersplugin.com/3221/getting-started-with-amr-users/#configure">configuratio</a>n.   When the report is run, the formatting function will add one as each user is displayed.  Thus the sort order determines the current &#8216;ranking&#8217;.</p>
<p>The ranking will work for more than one page.  It checks which page was requested and how many rows per page are being displayed.  Then starts the ranking count appropriately, and increments from there.</p>
<p><img class="aligncenter size-full wp-image-3601" alt="ranked users" src="http://wpusersplugin.com/wpusers/wp-content/uploads/2013/02/ranking.jpg" width="211" height="156" /></p>
<p>The add-on is a very simple little example plugin.</p>
<h2>Instructions</h2>
<ol>
<li>It allows a ranking field to be displayed.  Use &#8220;find fields&#8221; to bring it up after plugin activation.</li>
<li>Then configure your list, scroll down till you see the ranking field.  Add a number to the display column to say which column it should display in.</li>
<li>Save</li>
<li>Rebuild cache.</li>
</ol>
<h2>Download</h2>
<p>The downloads will be accessible to <a title="Login" href="http://wpusersplugin.com/wpusers/wp-login.php">logged in users</a> who have access to <a href="http://wpusersplugin.com/related-plugins/amr-user-plugin-add-ons/amr-users-plus/">amr-users-plus</a>.  If you are not already registered, the most cost effective options are the <a title="Register as a developer" href="http://wpusersplugin.com/wpusers/wp-login.php?action=register">&#8216;developer&#8217; </a>memberships as they give you access to the most add-ons and plugins.  Alternatively you can purchase short term access.  Note if upgrades are made after access expiry , membership repurchase or upgrade will be required.</p>
<div class="ym_private_no_access"><div style="margin-bottom:5px;width:100%;"><div class="ym_message"><div class="ym_message_liner">This post or download is available to active members:
Developer, Developer Gold
or for purchase for 10 USD by free members.  Note separate plugin purchase only gives access for 30 days.   Developer memberships are much better value - they give access to all plugins on this site, as well as any protected posts (>$90 worth) for extended periods.   Special requests are often released as updates.

<div id="ym_login_register_links"><span id="ym_login_link"><a href="http://wpusersplugin.com/wpusers/wp-login.php?redirect_to=http%3A%2F%2Fwpusersplugin.com%2F3600%2Fuser-list-with-a-ranking-or-scoreboard-rank%2F">[ Login ]</a></span>&nbsp;<span id="ym_register_link"><a href="http://wpusersplugin.com/wpusers/wp-login.php?action=register&ym_redirector=http%3A%2F%2Fwpusersplugin.com%2F3600%2Fuser-list-with-a-ranking-or-scoreboard-rank%2F">[ Register ]</a></span></div></div></div></div></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://wpusersplugin.com/3600/user-list-with-a-ranking-or-scoreboard-rank/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pull user data from custom table into list</title>
		<link>http://wpusersplugin.com/3596/pull-user-data-from-custom-table-into-list/</link>
		<comments>http://wpusersplugin.com/3596/pull-user-data-from-custom-table-into-list/#comments</comments>
		<pubDate>Fri, 15 Feb 2013 12:14:28 +0000</pubDate>
		<dc:creator>anmari</dc:creator>
				<category><![CDATA[amr users documentation]]></category>

		<guid isPermaLink="false">http://wpusersplugin.com/?p=3596</guid>
		<description><![CDATA[If you have a custom table that has user data in it, you can pull it into a list by writing a little site specific plugin and making use of some of the hooks available in the amr-users plugin. The &#8230; <a href="http://wpusersplugin.com/3596/pull-user-data-from-custom-table-into-list/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>If you have a custom table that has user data in it, you can pull it into a list by writing a little <a href="http://wpusersplugin.com/related-plugins/amr-user-plugin-add-ons/example-site-specific-add-on-using-filters/">site specific plugin</a> and making use of some of the <a title="amr users hooks and filters" href="http://wpusersplugin.com/2940/filters/">hooks</a> available in the amr-users plugin.</p>
<p>The hooks you&#8217;ll need are:</p>
<ul>
<li><a href="http://wpusersplugin.com/2940/filters/#amr_get_fields"> amr_get_fields</a></li>
<li><a href="http://wpusersplugin.com/2940/filters/#amr_get_users"> amr_get_users</a> (to add users to the list of existing  users) <strong>or</strong></li>
<li><a href="wpusersplugin.com/2940/filters/#amr_get_users_with_meta"> amr_get_users_with_meta</a> (to add data to array of existing users)</li>
</ul>
<p>Read the filter documentation and see the add-on plugins to see how to use these hooks.  Many of the add-ons use them to add data from a variety of different styles of tables.</p>
<p>See <a title="access user data in a custom table" href="http://wpusersplugin.com/2940/filters/#examples">http://wpusersplugin.com/2940/filters/#examples</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://wpusersplugin.com/3596/pull-user-data-from-custom-table-into-list/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>amr users plus v 2.4 available</title>
		<link>http://wpusersplugin.com/3560/amr-users-plus-v-2-4-available/</link>
		<comments>http://wpusersplugin.com/3560/amr-users-plus-v-2-4-available/#comments</comments>
		<pubDate>Mon, 26 Nov 2012 10:31:28 +0000</pubDate>
		<dc:creator>anmari</dc:creator>
				<category><![CDATA[amr users plus changelog]]></category>

		<guid isPermaLink="false">http://wpusersplugin.com/?p=3560</guid>
		<description><![CDATA[A minor update is available for amr users plus. Version 2.4 changes: Fix: added esc_url to urls to cope with unencoded ampersands in the alphabetical navigation.  This was failing html validation. Change: added a span with css class &#8220;novalues&#8221; to &#8230; <a href="http://wpusersplugin.com/3560/amr-users-plus-v-2-4-available/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>A minor update is available for <a title="download" href="http://wpusersplugin.com/related-plugins/amr-user-plugin-add-ons/amr-users-plus/#download">amr users plus</a>.</p>
<p>Version 2.4 changes:</p>
<ul>
<li>Fix: added esc_url to urls to cope with unencoded ampersands in the alphabetical navigation.  This was failing html validation.</li>
<li>Change: added a span with css class &#8220;novalues&#8221; to more easily allow styling of the text in the alphabetical navigation.  Somebody requested greater ability to style the alphabetical navigation.</li>
</ul>
<p>Version 2.4 was tested with <a title="free user listing plugin at wordpress" href="http://wordpress.org/extend/plugins/amr-users/">amr users 3.5.2</a> and <a title="wordpress version changelog" href="http://wordpress.org/news/2012/09/wordpress-3-4-2/">wordpress 3.4.2</a></p>
<div id="attachment_3561" class="wp-caption aligncenter" style="width: 216px"><a href="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/11/alphanavcss.jpg"><img class="size-full wp-image-3561" title="alphanavcss" src="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/11/alphanavcss.jpg" alt="Alpha navigation new css class" width="206" height="288" /></a><p class="wp-caption-text">Alpha navigation new css class</p></div>
]]></content:encoded>
			<wfw:commentRss>http://wpusersplugin.com/3560/amr-users-plus-v-2-4-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>V3.5, randomness, emptiness and a fix</title>
		<link>http://wpusersplugin.com/3545/v3-5-randomness-emptiness-and-a-fix/</link>
		<comments>http://wpusersplugin.com/3545/v3-5-randomness-emptiness-and-a-fix/#comments</comments>
		<pubDate>Sun, 18 Nov 2012 03:02:16 +0000</pubDate>
		<dc:creator>anmari</dc:creator>
				<category><![CDATA[amr users changelog]]></category>

		<guid isPermaLink="false">http://wpusersplugin.com/?p=3545</guid>
		<description><![CDATA[Version 3.5 just uploaded has been tested on wp  3.4.2 and has some special requests in it, as well as a small bug fix for multi site public csv links.   See the changelog. Randomness. A request was made to be &#8230; <a href="http://wpusersplugin.com/3545/v3-5-randomness-emptiness-and-a-fix/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Version 3.5 just uploaded has been tested on wp  3.4.2 and has some special requests in it, as well as a small bug fix for multi site public csv links.   See <a href="http://wordpress.org/extend/plugins/amr-users/changelog/">the changelog</a>.</p>
<h2>Randomness.</h2>
<p>A request was made to be able to start lists with a random sort.  Previously one would have to sort by a changing field to get some randomness.  True randomness is hard to do efficiently with cached lists the way it is currently implemented.  Mysql &#8220;orderby rand&#8221; can clog a system up.</p>
<p>However one can achieve a semblance of randomness:</p>
<ul>
<li>Short lists fully displayed ? &#8211; use shuffle=1 in your shortcode.</li>
<li>Large lists? &#8211; maybe use shuffle=1 AND start_randompage=1</li>
</ul>
<h2>Emptiness</h2>
<p>start_empty=1</p>
<p>Start a list that has filtering or search options as an &#8216;empty&#8217; list.  See example <a title="starting a wordpress user list empty with filtering or search" href="http://directories.wpusersplugin.com/empty-start/">blank user list at start</a></p>
<div id="attachment_3547" class="wp-caption aligncenter" style="width: 632px"><a href="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/11/emptystart.jpg"><img class="size-full wp-image-3547" title="emptystart" src="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/11/emptystart.jpg" alt="" width="622" height="217" /></a><p class="wp-caption-text">Start a list blank &#8211; use filters or search to get results</p></div>
<h3>More details, see <a title="Special parameters" href="http://wpusersplugin.com/2626/shortcodes/#special">http://wpusersplugin.com/2626/shortcodes/#special</a></h3>
]]></content:encoded>
			<wfw:commentRss>http://wpusersplugin.com/3545/v3-5-randomness-emptiness-and-a-fix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cacheing (amr-users)</title>
		<link>http://wpusersplugin.com/3458/cacheing-amr-users/</link>
		<comments>http://wpusersplugin.com/3458/cacheing-amr-users/#comments</comments>
		<pubDate>Sat, 29 Sep 2012 13:18:32 +0000</pubDate>
		<dc:creator>anmari</dc:creator>
				<category><![CDATA[amr users documentation]]></category>

		<guid isPermaLink="false">http://wpusersplugin.com/?p=3458</guid>
		<description><![CDATA[Why Cache? When to cache? (settings) How does the auto cache work? Cache Storage Cache Log Cache Status On demand refresh (admin or public) Transient Html Cacheing Why cache? Cacheing is required because: we want to display, query, filter and &#8230; <a href="http://wpusersplugin.com/3458/cacheing-amr-users/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<ul>
<li><a href="#whycache">Why Cache?</a></li>
<li><a href="#whencache">When to cache? (settings)</a></li>
<li><a href="#howcache">How does the auto cache work?</a></li>
<li><a href="#cachestorage">Cache Storage</a></li>
<li><a href="#cachelog">Cache Log</a></li>
<li><a href="#cachestatus">Cache Status</a></li>
<li><a title="How to allow on demand public refresh of cache (caution)" href="http://wpusersplugin.com/3466/cacheing-public-on-demand-refresh/">On demand refresh (admin or public)</a></li>
<li><a title="another layer of cacheing  - the html" href="http://wpusersplugin.com/3461/cacheing-transient-html/">Transient Html Cacheing</a></li>
</ul>
<h2 id="whycache">Why cache?</h2>
<p>Cacheing is required because:</p>
<ul>
<li>we want to display, query, filter and sort the data BUT</li>
<li>some plugins that create user data do it in &#8216;funny&#8217; non wp standard ways
<ul>
<li>they stick all their user data in one user-meta record, sometimes as an object, sometimes as an array&#8230;. (eg: ym (yourmembers), although they appear to be moving to standard wp), so we cannot simply<em> &#8216;select where meta = &#8216;</em></li>
<li>they store their user data in non wp tables, so that data has to be fetched separately.  This also means that the wp user update actions don&#8217;t fire.  So any recaching dependent on that may  not happen.</li>
</ul>
</li>
</ul>
<p>So the plugin grabs, extracts, does some magic and stores the data in a separate generic cache table.  Originally this was aimed primary at csv extraction.</p>
<h2 id="whencache">When to cache? (settings)</h2>
<div id="attachment_3490" class="wp-caption aligncenter" style="width: 515px"><a href="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/cachesettings.jpg"><img class="size-full wp-image-3490" title="cachesettings" src="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/cachesettings.jpg" alt="" width="505" height="517" /></a><p class="wp-caption-text">Cache settings</p></div>
<p>Ideally the lists should be up to date when you see them. BUT for reasons above this may not always be possible.  So consider the following scenarios:</p>
<h3>Internal admin access only?</h3>
<ul>
<li>Consider switching off ALL auto caching.</li>
<li>Only rebuild the data when you view the list.</li>
</ul>
<h3>Public lists, high level of user updates?</h3>
<ul>
<li>Strongly suggest do NOT recache on every user update</li>
<li>Cache at the greatest possible interval (less demand on sql database) &#8211; maybe daily ?</li>
<li>Manual refresh can be made available via an icon link on user list page &#8211; see admin refresh link.</li>
</ul>
<h3>Public lists, very low level user updates?</h3>
<ul>
<li>you must be sure about what plugins are causing user or user meta updates.  If you have a plugin that is tracking the pages people view, or their logins and storing the data in the user meta&#8230; do I need to say more?  Re caching on every user update would place a huge sql demand on your system.</li>
<li>Consider caching on use update only &#8211; no scheduled caching.</li>
</ul>
<h2 id="howcache">How does the auto cache rebuild work?</h2>
<p>(version 3.4.9 at time of writing)</p>
<p>The cache can be set to automatically update in the &#8216;background&#8217;.  This is achieved using standard <a title="wordpress cron" href="http://codex.wordpress.org/Category:WP-Cron_Functions">wordpress cron features</a>.  If you are new to cron, then basically all you need to know is that it needs some activity on your website to run.  eg: a page request.  A scheduled job will only run on the first page request after the jobs scheduled time.  If you have a <strong>very low traffic site</strong>, this could be quite late.</p>
<p>A cache update request is initiated via cron on the following <a title="wordpress admin actions" href="http://codex.wordpress.org/Plugin_API/Action_Reference#Administrative_Actions">wordpress actions</a>:</p>
<ul>
<li>    add_action(&#8216;profile_update&#8217;,'amr_user_change&#8217;);</li>
<li>    add_action(&#8216;user_register&#8217;,'amr_user_change&#8217;);</li>
<li>    add_action(&#8216;deleted_user&#8217;,'amr_user_change&#8217;); // also for wpmu</li>
<li>    add_action(&#8216;added_user_meta&#8217;,'amr_user_meta_change&#8217;);</li>
<li>    add_action(&#8216;updated_user_meta&#8217;,'amr_user_meta_change&#8217;);</li>
<li>    add_action(&#8216;deleted_user_meta&#8217;,'amr_user_meta_change&#8217;);</li>
<li>    add_action(&#8216;make_spam_user&#8217;,'amr_user_meta_change&#8217;);</li>
<li>    add_action(&#8216;make_ham_user&#8217;,'amr_user_meta_change&#8217;);</li>
<li>    add_action(&#8216;remove_user_from_blog&#8217;,'amr_user_change&#8217;);</li>
<li>    add_action(&#8216;add_user_to_blog&#8217;,'amr_user_change&#8217;);</li>
</ul>
<p>If your install has a user update that <strong>does NOT trigger a wordpress action</strong> (eg: another plugin stores user data somewhere else), then the plugin has no way of knowing that a user update has happened.</p>
<p>If the other plugin uses its own update actions, you could add a custom function call on that action similar to the above calls.</p>
<p>Alternatively either a regularly scheduled update or a <a title="how to allow public users to request a cache rebuild" href="http://wpusersplugin.com/3466/cacheing-public-on-demand-refresh/">manual on demand refresh</a> may be adequate.</p>
<p>The cache update request attempts to schedule <strong>a master cron job</strong>.  Many of these wordpress actions may trigger within milliseconds of each other.   The plugin therefore checks whether a cache update is scheduled within the near future to avoid duplicate work.</p>
<div id="attachment_3491" class="wp-caption aligncenter" style="width: 610px"><a href="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/cronmgr.jpg"><img class="size-full wp-image-3491" title="cronmgr" src="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/cronmgr.jpg" alt="Master cache cron job shown in amr cron manager" width="600" height="396" /></a><p class="wp-caption-text">Master cache cron job shown in amr cron manager</p></div>
<p>The master cron cache job then schedules <strong>individual jobs for each of the reports</strong>.  They are scheduled to run separately, not concurrently.  In your cron manager plugin you should see an entry for each job.</p>
<p>When testing, you should therefore do a page request or two approximately minutes apart <strong>for each report</strong> that you have designed.  Check the cache log in between.</p>
<div id="attachment_3493" class="wp-caption aligncenter" style="width: 612px"><a href="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/cronruns1.jpg"><img class="size-full wp-image-3493" title="cronruns" src="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/cronruns1.jpg" alt="" width="602" height="205" /></a><p class="wp-caption-text">A cron run for each report</p></div>
<h2 id="cachestorage">Cache storage</h2>
<p>(version 3.4.9 at time of writing)</p>
<p>This may change at a later stage for installs that only  use standard wordpress user meta.  Other installs will need the current setupo to deal with their user data created by other plugins.</p>
<p>Currently a generic cache report table in csv format is created.  This made sense originally, however as the plugin became popular more features were requested.  This approach is not ideal for optimum efficiency (especially large high traffic installs).  If one is only using standard wordpress user and user meta data, then the lists could be more efficient.   To cope with non standard data, the curremt approach will have to continue.</p>
<h2 id="cachelog"><a href="http://wpusersplugin.com/3477/cacheing-the-cache-log/">Cache Log</a></h2>
<p>The cache log will list the most recent cache rebuild activities.  If you are concerned or not sure how the cache updates are initiated, please pay close attention to the cache log when testing.  For more details see <a title="How to interpret the cache log" href="http://wpusersplugin.com/3477/cacheing-the-cache-log/">cacheing-the-cache-log</a></p>
<div id="attachment_3479" class="wp-caption aligncenter" style="width: 572px"><a title="More Details on the cache log" href="http://wpusersplugin.com/3477/cacheing-the-cache-log/"><img class="size-full wp-image-3479" title="user_update_cache_log" src="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/user_update_cache_log.jpg" alt="" width="562" height="339" /></a><p class="wp-caption-text">User Meta Update causes cron cache rebuild</p></div>
<h2 id="cachestatus">Cache Status</h2>
<p>The cache status page lists</p>
<ul>
<li>the size (lines) of a list</li>
<li>when the cached list was last built</li>
<li>how long it took to build the cache</li>
<li>the peak php memory requirement while running the cache update</li>
<li>some info on the list</li>
</ul>
<p>It also has options to totally clear out the various cache records (in case your install gets in a knot), and force the plugin to start again.</p>
<div id="attachment_3489" class="wp-caption aligncenter" style="width: 621px"><a href="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/cachestatus.jpg"><img class="size-full wp-image-3489" title="cachestatus" src="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/cachestatus.jpg" alt="" width="611" height="454" /></a><p class="wp-caption-text">Cache Status</p></div>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://wpusersplugin.com/3458/cacheing-amr-users/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cacheing &#8211; the cache log</title>
		<link>http://wpusersplugin.com/3477/cacheing-the-cache-log/</link>
		<comments>http://wpusersplugin.com/3477/cacheing-the-cache-log/#comments</comments>
		<pubDate>Sat, 29 Sep 2012 08:59:47 +0000</pubDate>
		<dc:creator>anmari</dc:creator>
				<category><![CDATA[amr users documentation]]></category>

		<guid isPermaLink="false">http://wpusersplugin.com/?p=3477</guid>
		<description><![CDATA[The amr users cache log is a useful tool especially when using background (cron) cacheing.  The cron log shows key actions with latest at the top, so read from the bottom up. will show more messages if wp-debug is enabled &#8230; <a href="http://wpusersplugin.com/3477/cacheing-the-cache-log/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The amr users cache log is a useful tool especially when using background (cron) cacheing.</p>
<div id="attachment_3483" class="wp-caption aligncenter" style="width: 713px"><a href="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/usermasterupdate.jpg"><img class="size-full wp-image-3483" title="usermasterupdate" src="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/usermasterupdate.jpg" alt="Cache log example" width="703" height="302" /></a><p class="wp-caption-text">Cache log example, where user master was updated (not meta). A Cache rebuild had been scheduled, but not yet run.</p></div>
<h2> The cron log</h2>
<ul>
<li>shows key actions with <strong>latest at the top</strong>, so read from the bottom up.</li>
<li>will show more messages if <strong>wp-debug</strong> is enabled</li>
<li>does not keep a lot of history &#8211; it cleans up after itself.  It&#8217;s a <strong>testing tool</strong> primarily.</li>
<li>will indicate runtimes</li>
<li>will indicate batches of updates of the cache records.</li>
<li>will list <strong>why a cache was initiated</strong>
<ul>
<li>master user update</li>
<li>user meta update</li>
<li>background request,</li>
<li>else  manual request</li>
</ul>
</li>
</ul>
<h2>Example Screenshots</h2>
<h3>User meta update request:</h3>
<ul>
<li>the <span style="color: #339966;">green</span> text showing the action that causes a request to rebuild cache</li>
<li>the <strong>bolded</strong> text controlling background job that setups the cron jobs for each of the lists</li>
<li>the <em>italic</em> text showing the completion of the cache rebuilds for each list.</li>
</ul>
<div id="attachment_3479" class="wp-caption aligncenter" style="width: 572px"><a href="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/user_update_cache_log.jpg"><img class="size-full wp-image-3479" title="user_update_cache_log" src="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/user_update_cache_log.jpg" alt="" width="562" height="339" /></a><p class="wp-caption-text">User Meta Update causes cron cache rebuild</p></div>
<h3>Change of settings and background run</h3>
<ul>
<li>the change of setting is listed and the time that the next cron job will run</li>
<li>the rebuilds of reports 1 and 2 have been scheduled but not yet run</li>
</ul>
<div id="attachment_3478" class="wp-caption aligncenter" style="width: 503px"><a href="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/cachelogbackgroundrequest.jpg"><img class="size-full wp-image-3478" title="cachelogbackgroundrequest" src="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/cachelogbackgroundrequest.jpg" alt="" width="493" height="431" /></a><p class="wp-caption-text">Background request scheduled, preceded by some manual request, also some debug statements on memory</p></div>
<h3>Cron jobs have been run for reports</h3>
<div id="attachment_3480" class="wp-caption aligncenter" style="width: 517px"><a href="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/nowrun.jpg"><img class="size-full wp-image-3480" title="nowrun" src="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/nowrun.jpg" alt="An update of the previous image - the jobs have now been run." width="507" height="334" /></a><p class="wp-caption-text">An update of the previous image &#8211; the jobs have now been run.</p></div>
<p>&nbsp;</p>
<h2>Why use the cron log?</h2>
<p>One can confuse oneself mightily if</p>
<ul>
<li>changing settings,  while background jobs are running, or</li>
<li>on very large data bases if runs take a while</li>
<li>if you have user update set, but no updates seem to happen (maybe your user updates are not actually to the wp user meta.)</li>
<li>&#8230;</li>
</ul>
<p>So take it easy &#8211; use the tools available.  A good cron manager plugin may also be helpful. There are many around. I like my <a title="wordpress cron manager plugin with reschedule ability" href="http://wpusersplugin.com/related-plugins/amr-cron-manager/">cron manager plugin</a> because you can reschedule any cron job, eg make them run immediately.  It&#8217;s included in developer memberships.</p>
]]></content:encoded>
			<wfw:commentRss>http://wpusersplugin.com/3477/cacheing-the-cache-log/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cacheing &#8211; transient html</title>
		<link>http://wpusersplugin.com/3461/cacheing-transient-html/</link>
		<comments>http://wpusersplugin.com/3461/cacheing-transient-html/#comments</comments>
		<pubDate>Sat, 29 Sep 2012 08:24:41 +0000</pubDate>
		<dc:creator>anmari</dc:creator>
				<category><![CDATA[amr users documentation]]></category>

		<guid isPermaLink="false">http://wpusersplugin.com/?p=3461</guid>
		<description><![CDATA[Why use transients ? To cache the html: The cacheing process is sql intensive.  It is the way it is primarily because of the way that various third party plugins create user data.  A later version (maybe version 4.0 upwards) &#8230; <a href="http://wpusersplugin.com/3461/cacheing-transient-html/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<h2>Why use transients ?</h2>
<p>To cache the html:</p>
<p>The cacheing process is <strong>sql intensive</strong>.  It is the way it is primarily because of the way that various third party plugins create user data.  A later version (maybe version 4.0 upwards) will have improved method for those who have standard wp user meta data &#8211; yay!   That&#8217;s the data not the html.</p>
<p><strong>Querying the cache</strong> may also place a load (depending how weird (non wp) your data is and on your report settings).</p>
<p>WordPress offers <a title="wordpress transient caching" href="http://codex.wordpress.org/Transients_API">transients</a> for short term caching. The amr users plugin <strong>uses the transients feature to cache the html</strong> for the user lists.  If you have a lot of querying activity where people are just browsing the first page, stored  html may reduce the query load on the database.  The transient default expiry setting is <strong>60 seconds</strong>.  Later plugin versions may allow you to set this value.</p>
<h2>Stored html not used:</h2>
<p>Stored transient html is not used (cannot be used) when filtering or sorting or  perform some action on the stored cache data.</p>
<p>It is also not used (obviously) when the cached has just been rebuilt.</p>
<h2>Stored html may be used:</h2>
<p>The first view after cacheing may store the html in a transient.  If someone requests that self same page before transient expiry, then the stored html may be used.</p>
<h2>Arghh, this makes testing hard &#8211; how do I know if a transient is used?</h2>
<p>Easy.  If you are a logged in admin user when you view a list it will show a subtle exclamation mark. Hopefully not so subtle that you miss it!</p>
<div id="attachment_3462" class="wp-caption aligncenter" style="width: 327px"><a href="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/exclamation.jpg"><img class="size-full wp-image-3462" title="exclamation" src="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/exclamation.jpg" alt="Transient html exclamation mark for admin users " width="317" height="295" /></a><p class="wp-caption-text">Transient html exclamation mark for admin users</p></div>
<p>To test this,</p>
<ul>
<li>login as admin</li>
<li>view the list</li>
<li>now refresh the page</li>
<li>Voila&#8230; now <strong>hover over the exclamation mark</strong></li>
</ul>
<div id="attachment_3463" class="wp-caption aligncenter" style="width: 324px"><a href="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/hover.jpg"><img class="size-full wp-image-3463" title="hover" src="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/hover.jpg" alt="Hover text on transient exclamation mark" width="314" height="305" /></a><p class="wp-caption-text">Hover text on exclamation mark</p></div>
<h2>Refreshing the html, from the cached data</h2>
<p><em>OMG how hard is testing when you don&#8217;t know whether the data is the latest or not ?  Tell me about it ! (no really don&#8217;t, I know. I&#8217;m pedantic, I like to test and check every step of the way and know exactly what&#8217;s going on, so of course there is a way&#8230;.)</em></p>
<p>Now click on that exclamation mark &#8211; <strong>magic happens</strong>.  It is actually a  link with a little refresh query parameter added:</p>
<blockquote><p>&#8230;./sample-page/user-list/?refresh=1</p></blockquote>
<p>If you have debug enabled, you may see a little debug message telling you what&#8217;s happening:</p>
<div id="attachment_3464" class="wp-caption aligncenter" style="width: 586px"><a href="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/debug.jpg"><img class="size-full wp-image-3464" title="debug" src="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/debug.jpg" alt="Debug message" width="576" height="125" /></a><p class="wp-caption-text">Debug message</p></div>
<p>Don&#8217;t panic &#8211; the message only shows if you have WP_Debug enabled and are a logged in admin.</p>
<p>Hmm interesting, <a title="Rebuild the cache data on request" href="http://wpusersplugin.com/3466/cacheing-public-on-demand-refresh/">on demand refresh of the cached data</a> huh?</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://wpusersplugin.com/3461/cacheing-transient-html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cacheing &#8211; public on demand refresh</title>
		<link>http://wpusersplugin.com/3466/cacheing-public-on-demand-refresh/</link>
		<comments>http://wpusersplugin.com/3466/cacheing-public-on-demand-refresh/#comments</comments>
		<pubDate>Sat, 29 Sep 2012 08:22:17 +0000</pubDate>
		<dc:creator>anmari</dc:creator>
				<category><![CDATA[amr users documentation]]></category>

		<guid isPermaLink="false">http://wpusersplugin.com/?p=3466</guid>
		<description><![CDATA[Allow users to request a rebuild of the amr users plugin data? Setting the refresh setting for a list will cause a refresh icon to show below the list. Use this cautiously and only if it is imperative that users &#8230; <a href="http://wpusersplugin.com/3466/cacheing-public-on-demand-refresh/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<h2>Allow users to request a rebuild of the amr users plugin data?</h2>
<div id="attachment_3467" class="wp-caption aligncenter" style="width: 510px"><a href="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/refresh.jpg"><img class="size-full wp-image-3467" title="refresh" src="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/refresh.jpg" alt="On demand refresh setting" width="500" height="200" /></a><p class="wp-caption-text">On demand refresh setting</p></div>
<p>Setting the refresh setting for a list will cause a refresh icon to show below the list.</p>
<p>Use this cautiously and only if it is imperative that users be able to request a rebuild of the cache.</p>
<div id="attachment_3468" class="wp-caption aligncenter" style="width: 412px"><a href="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/refreshicon.jpg"><img class="size-full wp-image-3468" title="refreshicon" src="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/refreshicon.jpg" alt="Refresh icon shown on public list" width="402" height="144" /></a><p class="wp-caption-text">Refresh icon shown on public list</p></div>
<h2>Customise the refresh link</h2>
<p>In the general settings, you can specify what the refresh link should look like and the hover text.   Plain text or image link &#8211; it&#8217;s your choice.</p>
<div id="attachment_3469" class="wp-caption aligncenter" style="width: 800px"><a href="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/refreshsetting.jpg"><img class="size-full wp-image-3469" title="refreshsetting" src="http://wpusersplugin.com/wpusers/wp-content/uploads/2012/09/refreshsetting.jpg" alt="refresh setting" width="790" height="167" /></a><p class="wp-caption-text">refresh text or image setting</p></div>
<h2>Code your own refresh link</h2>
<p>It&#8217;s just html folks &#8211; a glorified hyperlink with a url query parameter  You can also add your own link and insert it into the page content below the shortcode.</p>
]]></content:encoded>
			<wfw:commentRss>http://wpusersplugin.com/3466/cacheing-public-on-demand-refresh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
