| 开发者 | alpimobil |
|---|---|
| 更新时间 | 2026年9月24日 18:30 |
| PHP版本: | 8.1 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
trailmark_log() helper and filters such as trailmark_capability, trailmark_should_log, trailmark_excluded_post_types, trailmark_tracked_options and trailmark_trackers.trailmark-activity-log folder to /wp-content/plugins/, or install the plugin through the Plugins → Add New screen.Yes. All features are free. There is no paid version.
The plugin is fully translatable through translate.wordpress.org, and a complete Turkish (Türkçe) translation is provided by the author there. WordPress downloads the translation for your site language automatically. You can also force English or Turkish for the Activity Log screens under Activity Log → Settings → Interface language.
Users with the manage_options capability (administrators). Developers can change this with the trailmark_capability and trailmark_manage_capability filters.
No. Passwords, password hashes, session tokens and application passwords are never stored. A password change is only recorded as "the password was changed". For failed logins, the submitted password is never read, and usernames that do not belong to an existing account are not stored by default, because people sometimes type their password into the username field.
No noticeable impact. Front-end visitors do not trigger any queries unless they log in or fail to log in. Logging is one small INSERT, and errors while logging are silently ignored so they can never break the action being logged.
Go to Activity Log → Settings → IP address source and choose Cloudflare or your proxy header. Only do this if a proxy really is in front of your site; otherwise visitors could fake their IP address.
Yes, in two ways:
By default, your logs are kept. If you enable Delete all activity data and settings when the plugin is deleted, the table and settings are removed when you delete the plugin.
Yes:
trailmark_log( array( 'action' => 'updated', 'object_type' => 'my_thing', 'object_name' => 'Header banner', 'details' => array( 'message' => 'Banner replaced.' ) ) );