{"id":39054,"date":"2015-09-21T21:31:19","date_gmt":"2015-09-21T21:31:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/wp-user-activity\/"},"modified":"2026-09-16T07:30:58","modified_gmt":"2026-09-16T07:30:58","slug":"wp-user-activity","status":"publish","type":"plugin","link":"https:\/\/tah.wordpress.org\/plugins\/wp-user-activity\/","author":395440,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.2.3","stable_tag":"2.2.3","tested":"7.1.2","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"WP User Activity","header_author":"Triple J Software, Inc.","header_description":"","assets_banners_color":"2a95c5","last_updated":"2026-09-16 07:30:58","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/buy.stripe.com\/7sI3cd2tK1Cy2lydQR","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/wp-user-activity\/","header_author_uri":"https:\/\/jjj.software","rating":3.3,"author_block_rating":0,"active_installs":200,"downloads":14562,"num_ratings":8,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.2.0":{"tag":"2.2.0","author":"johnjamesjacoby","date":"2026-03-28 20:32:47","revision":3493555},"2.2.2":{"tag":"2.2.2","author":"johnjamesjacoby","date":"2026-09-15 08:17:23","revision":3696472},"2.2.3":{"tag":"2.2.3","author":"johnjamesjacoby","date":"2026-09-16 07:30:58","revision":3698081}},"upgrade_notice":[],"ratings":{"1":3,"2":0,"3":0,"4":2,"5":3},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":1267647,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":1267647,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":1250675,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":1250675,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.2.0","2.2.2","2.2.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":1250675,"resolution":"1","location":"assets","locale":"","width":2880,"height":1596},"screenshot-2.png":{"filename":"screenshot-2.png","revision":1250682,"resolution":"2","location":"assets","locale":"","width":2880,"height":1172}},"screenshots":{"1":"The log","2":"Edit activity"}},"plugin_section":[],"plugin_tags":[2505,908,435,2153],"plugin_category":[44,50,59],"plugin_contributors":[77545],"plugin_business_model":[],"class_list":["post-39054","plugin","type-plugin","status-publish","hentry","plugin_tags-activity","plugin_tags-log","plugin_tags-profile","plugin_tags-user","plugin_category-discussion-and-community","plugin_category-media","plugin_category-utilities-and-tools","plugin_contributors-johnjamesjacoby","plugin_committers-johnjamesjacoby"],"banners":{"banner":"https:\/\/ps.w.org\/wp-user-activity\/assets\/banner-772x250.png?rev=1250675","banner_2x":"https:\/\/ps.w.org\/wp-user-activity\/assets\/banner-1544x500.png?rev=1250675","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/wp-user-activity\/assets\/icon-128x128.png?rev=1267647","icon_2x":"https:\/\/ps.w.org\/wp-user-activity\/assets\/icon-256x256.png?rev=1267647","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/wp-user-activity\/assets\/screenshot-1.png?rev=1250675","caption":"The log"},{"src":"https:\/\/ps.w.org\/wp-user-activity\/assets\/screenshot-2.png?rev=1250682","caption":"Edit activity"}],"raw_content":"<!--section=description-->\n<p>WP User Activity is the best way to log activity in WordPress. Activity can be sorted, filtered, and viewed per-user, along with session data for logged in users and IP addresses &amp; user-agents for others.<\/p>\n\n<p>Activity is broken down into object \"Types\" and \"Actions.\" Types are the objects being acted upon, and actions are what is being done to them. If you're familiar with BuddyPress, this should feel pretty comfortable.<\/p>\n\n<h4>Examples<\/h4>\n\n<pre><code>Admin logged in 2 minutes ago.\n\nAdmin created the post \"Hello World\" 33 seconds ago.\n\nAdmin created the topic \"I need help!\" 5 days ago.\n<\/code><\/pre>\n\n<h4>Available Actions<\/h4>\n\n<ul>\n<li>Attachments (Upload, Edit, Delete)<\/li>\n<li>Comments (Create, Pending, Approve, Unaprove, Trash, Untrash, Spam, Unspam, Delete)<\/li>\n<li>Core (Update, Auto-update)<\/li>\n<li>Exports (Download)<\/li>\n<li>Menus (Create, Update, Delete)<\/li>\n<li>Plugins (Install, Update, Activate, Deactivate, Edit, Delete)<\/li>\n<li>Posts (Create, Update, Delete, Trash, Untrash, Spam, Unspam, Future)<\/li>\n<li>Settings (Update)<\/li>\n<li>Terms (Create, Update, Delete)<\/li>\n<li>Themes (Customize, Install, Update, Activate, Edit, Delete)<\/li>\n<li>Users (Login, Login Failure, Logout, Register, Update, Delete)<\/li>\n<li>Widgets (Update, Delete)<\/li>\n<\/ul>\n\n<h4>Recommended Plugins<\/h4>\n\n<p>If you like this plugin, you'll probably like these, too!<\/p>\n\n<ul>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/wp-user-profiles\/\" title=\"A sophisticated way to edit users in WordPress.\">WP User Profiles<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/wp-user-activity\/\" title=\"The best way to log activity in WordPress.\">WP User Activity<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/wp-user-avatars\/\" title=\"Allow users to upload avatars or choose them from your media library.\">WP User Avatars<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/wp-user-groups\/\" title=\"Group users together with taxonomies &amp; terms.\">WP User Groups<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/wp-term-authors\/\" title=\"Authors for categories, tags, and other taxonomy terms.\">WP Term Authors<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/wp-term-colors\/\" title=\"Pretty colors for categories, tags, and other taxonomy terms.\">WP Term Colors<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/wp-term-families\/\" title=\"Associate taxonomy terms with other taxonomy terms.\">WP Term Families<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/wp-term-icons\/\" title=\"Pretty icons for categories, tags, and other taxonomy terms.\">WP Term Icons<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/wp-term-images\/\" title=\"Pretty images for categories, tags, and other taxonomy terms.\">WP Term Images<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/wp-term-locks\/\" title=\"Protect categories, tags, and other taxonomy terms from being edited or deleted.\">WP Term Locks<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/wp-term-order\/\" title=\"Sort taxonomy terms, your way.\">WP Term Order<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/wp-term-visibility\/\" title=\"Visibilities for categories, tags, and other taxonomy terms.\">WP Term Visibility<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/wp-media-categories\/\" title=\"Add categories to media &amp; attachments.\">WP Media Categories<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/wp-pretty-filters\/\" title=\"Makes post filters better match what&apos;s already in Media &amp; Attachments.\">WP Pretty Filters<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/wp-chosen\/\" title=\"Make long, unwieldy select boxes much more user-friendly.\">WP Chosen<\/a><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ul>\n<li>Download and install using the built in WordPress plugin installer.<\/li>\n<li>Activate in the \"Plugins\" area of your admin by clicking the \"Activate\" link.<\/li>\n<li>No further setup or configuration is necessary.<\/li>\n<\/ul>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20work%20with%20custom%20post%20types%20%26%20taxonomies%3F\"><h3>Does this work with custom post types &amp; taxonomies?<\/h3><\/dt>\n<dd><p>Yes. It will work perfectly with all post-types &amp; taxonomies that define their own labels. Ones that don't are mocked using the post type ID.<\/p><\/dd>\n<dt id=\"can%20i%20create%20custom%20activity%20types%20%26%20actions%3F\"><h3>Can I create custom activity types &amp; actions?<\/h3><\/dt>\n<dd><p>Yes. The autoloader can be filtered, so adding new object types is as simple as:<\/p>\n\n<pre><code>add_filter( 'wp_get_default_user_activity_types', function( $types = array() ) {\n    $types[] = 'Your_New_Type'; \/\/ class that extends WP_User_Activity_Type\n    return $types;\n} );\n<\/code><\/pre>\n\n<p>The <code>WP_User_Activity_Type_Taxonomy<\/code> class is a good example to start with, if you'd like to create your own actions. It registers simple create\/update\/delete methods, with easy to understand messages &amp; integrations.<\/p><\/dd>\n<dt id=\"does%20this%20create%20new%20database%20tables%3F\"><h3>Does this create new database tables?<\/h3><\/dt>\n<dd><p>No. It uses the WordPress custom post-type and metadata APIs.<\/p><\/dd>\n<dt id=\"does%20this%20modify%20existing%20database%20tables%3F\"><h3>Does this modify existing database tables?<\/h3><\/dt>\n<dd><p>No. All of the WordPress core database tables remain untouched.<\/p><\/dd>\n<dt id=\"where%20can%20i%20get%20support%3F\"><h3>Where can I get support?<\/h3><\/dt>\n<dd><ul>\n<li>Community: https:\/\/wordpress.org\/support\/plugin\/wp-user-activity<\/li>\n<li>Development: https:\/\/github.com\/stuttter\/wp-user-activity\/discussions<\/li>\n<\/ul><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>[2.2.3] - 2026-09-16<\/h4>\n\n<ul>\n<li>Require WordPress 6.4 or newer<\/li>\n<\/ul>\n\n<h4>[2.2.2] - 2026-09-15<\/h4>\n\n<ul>\n<li>Fix PHP 8.2 compatibility and several PHP warnings<\/li>\n<li>Fix activity logging for child-theme updates and ACF field groups<\/li>\n<li>Improve output escaping and translation compatibility<\/li>\n<li>Require PHP 7.4 and WordPress 5.2<\/li>\n<li>Add automated tests, static analysis, Plugin Check, and release validation<\/li>\n<\/ul>\n\n<h4>[2.2.1] - 2021-05-29<\/h4>\n\n<ul>\n<li>Update author info<\/li>\n<li>Add sponsor link<\/li>\n<\/ul>\n\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>Fix filtering by user<\/li>\n<li>Fix compatibility with WP User Profiles<\/li>\n<li>Fix untrashing individual items<\/li>\n<li>Fix an incompatibility with ACF<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>Fix user not being linked to \"Logout\" action<\/li>\n<\/ul>\n\n<h4>2.0.2<\/h4>\n\n<ul>\n<li>Add escaping to admin area row output<\/li>\n<li>Return IDs in useful places for easier extending<\/li>\n<\/ul>\n\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>Fix filtering by user<\/li>\n<li>Fix compatibility with WP User Profiles<\/li>\n<li>Fix untrashing individual items<\/li>\n<li>Fix an incompatibility with ACF<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>Fix user not being linked to \"Logout\" action<\/li>\n<\/ul>\n\n<h4>2.0.2<\/h4>\n\n<ul>\n<li>Add escaping to admin area row output<\/li>\n<li>Return IDs in useful places for easier extending<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Remove all actions from transition_post_status to avoid infinite loops<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Official public release<\/li>\n<li>Add support for \"pending\" comments<\/li>\n<li>Improved mu-plugins location support<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Support for User Profiles 0.2.0<\/li>\n<\/ul>\n\n<h4>0.1.10<\/h4>\n\n<ul>\n<li>Add missing action for 'plugin delete'<\/li>\n<\/ul>\n\n<h4>0.1.9<\/h4>\n\n<ul>\n<li>Support for WP User Profiles 0.1.9<\/li>\n<\/ul>\n\n<h4>0.1.8<\/h4>\n\n<ul>\n<li>Fix conflict causing widgets not to save<\/li>\n<\/ul>\n\n<h4>0.1.7<\/h4>\n\n<ul>\n<li>Fix list-table issue causing fatal errors<\/li>\n<\/ul>\n\n<h4>0.1.6<\/h4>\n\n<ul>\n<li>Prevent user profile activity from leaking out<\/li>\n<\/ul>\n\n<h4>0.1.5<\/h4>\n\n<ul>\n<li>Update column names<\/li>\n<li>Add support for WP User Profiles<\/li>\n<\/ul>\n\n<h4>0.1.4<\/h4>\n\n<ul>\n<li>Improve compatibility with other plugins<\/li>\n<\/ul>\n\n<h4>0.1.3<\/h4>\n\n<ul>\n<li>Add menu humility filter<\/li>\n<li>Improve capability checks<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Improve admin styling<\/li>\n<li>Add metadata callbacks<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Improve admin styling<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Log, sort, and filter user activity in WordPress.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/39054","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=39054"}],"author":[{"embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/johnjamesjacoby"}],"wp:attachment":[{"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=39054"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=39054"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=39054"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=39054"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=39054"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=39054"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}