@prefix sioc: <http://rdfs.org/sioc/ns#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix content: <http://purl.org/rss/1.0/modules/content/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<https://lhero.org/portfolio/lh-user-insights/>
  a sioc:Post ;
  dc:title "Admin screen" ;
  dcterms:identifier 150381 ;
  dc:modified "2026-10-15T03:01:01Z"^^xsd:dateTime ;
  dc:created "2026-10-15T03:01:01Z"^^xsd:dateTime ;
  sioc:link <https://lhero.org/portfolio/lh-user-insights/admin-screen/> ;
  sioc:has_creator <https://lhero.org/author/1/#account> ;
  sioc:has_container <https://lhero.org/#posts> ;
  content:encoded """<ul class="lh_portfolio-meta"><li><strong>Part of:</strong> <a href="https://lhero.org/portfolio/lh-user-insights/">LH User Insights</a></li></ul>
<p class="wp-block-paragraph">The screen is at <strong>Users &gt; User Insights</strong> on each site, for accounts with the plugin&#8217;s capability (<code>install_plugins</code> by default, filterable with <code>lh_ui_capability</code>). It lists the site&#8217;s users in a DataViews table: choose columns, sort, search by username, email or display name, filter, and page through. Each administrator&#8217;s columns, sort, filters, search and page size are saved in their usermeta and restored on their next visit. Usernames link to the user&#8217;s edit screen.</p>



<h3 class="wp-block-heading">Filters</h3>



<p class="wp-block-paragraph">Only filters the query engine answers exactly are offered, and all filters must match:</p>



<ul class="wp-block-list">
<li>Text fields: is, is not, contains, does not contain, starts with.</li>



<li>Number fields: is, less than, greater than.</li>



<li>Choice fields (such as Role): is, is not.</li>



<li>Multiple-choice profile fields: includes all, includes none.</li>



<li>Dates: on, before, after, on or before, on or after, between, in the past, and over a number of days, weeks, months or years ago.</li>
</ul>



<p class="wp-block-paragraph">The engine&#8217;s &#8220;is set&#8221;, &#8220;is not set&#8221; and &#8220;ends with&#8221; operators are available through the query-users ability but not on the screen.</p>



<h3 class="wp-block-heading">Building the screen</h3>



<p class="wp-block-paragraph">The app lives in <code>js/src/</code> and is built locally, since no build tooling runs on the server: <code>npm install &amp;&amp; npm run build</code> in <code>js/</code>, then deploy <code>js/build/</code>. It pins <code>@wordpress/dataviews</code> 12.0.1 and <code>@wordpress/scripts</code> 31.5.1, and imports DataViews from the package root so <code>wp-components</code> comes from core rather than being bundled. The build copies DataViews&#8217; own stylesheets into <code>build/</code> as <code>dataviews.css</code> and <code>dataviews-rtl.css</code>. If the build is missing, the screen shows a notice instead of the table.</p>



<p class="wp-block-paragraph">The screen reads rows from <code>GET lh-user-insights/v1/users/query</code> (<code>filters</code>, <code>fields</code>, <code>search</code>, <code>orderby</code>, <code>order</code>, <code>number</code> up to 100, <code>offset</code>) and saves its view with <code>POST lh-user-insights/v1/view</code>. Filters are checked by <code>LH_UI_Filters</code>, the same check the query-users ability uses.</p>
"""^^rdf:XMLLiteral ;
  sioc:content """Part of: LH User Insights
The screen is at Users &gt; User Insights on each site, for accounts with the plugin&#8217;s capability (install_plugins by default, filterable with lh_ui_capability). It lists the site&#8217;s users in a DataViews table: choose columns, sort, search by username, email or display name, filter, and page through. Each administrator&#8217;s columns, sort, filters, search and page size are saved in their usermeta and restored on their next visit. Usernames link to the user&#8217;s edit screen.



Filters



Only filters the query engine answers exactly are offered, and all filters must match:




Text fields: is, is not, contains, does not contain, starts with.



Number fields: is, less than, greater than.



Choice fields (such as Role): is, is not.



Multiple-choice profile fields: includes all, includes none.



Dates: on, before, after, on or before, on or after, between, in the past, and over a number of days, weeks, months or years ago.




The engine&#8217;s &#8220;is set&#8221;, &#8220;is not set&#8221; and &#8220;ends with&#8221; operators are available through the query-users ability but not on the screen.



Building the screen



The app lives in js/src/ and is built locally, since no build tooling runs on the server: npm install &amp;&amp; npm run build in js/, then deploy js/build/. It pins @wordpress/dataviews 12.0.1 and @wordpress/scripts 31.5.1, and imports DataViews from the package root so wp-components comes from core rather than being bundled. The build copies DataViews&#8217; own stylesheets into build/ as dataviews.css and dataviews-rtl.css. If the build is missing, the screen shows a notice instead of the table.



The screen reads rows from GET lh-user-insights/v1/users/query (filters, fields, search, orderby, order, number up to 100, offset) and saves its view with POST lh-user-insights/v1/view. Filters are checked by LH_UI_Filters, the same check the query-users ability uses.
""" ;
  sioc:topic <https://lhero.org/?taxonomy=author&term=cap-1> .

<https://lhero.org/author/1/#account> rdfs:seeAlso <https://lhero.org/author/1/?feed=lhrdf&format=turtle> .
<https://lhero.org/?taxonomy=author&term=cap-1> rdfs:seeAlso <https://lhero.org/?taxonomy=author&term=cap-1&feed=lhrdf&format=turtle> .
