{"id":289135,"date":"2026-03-24T17:05:01","date_gmt":"2026-03-24T17:05:01","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/dockthor\/"},"modified":"2026-03-24T17:04:33","modified_gmt":"2026-03-24T17:04:33","slug":"dockthor","status":"publish","type":"plugin","link":"https:\/\/cor.wordpress.org\/plugins\/dockthor\/","author":20203493,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.0","stable_tag":"1.0.0","tested":"6.9.4","requires":"5.6","requires_php":"7.2","requires_plugins":null,"header_name":"DockTHOR","header_author":"Dock","header_description":"A (unofficial) WordPress plugin to report PHP errors to DockTHOR.","assets_banners_color":"","last_updated":"2026-03-24 17:04:33","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/thor.dock.codes","header_author_uri":"https:\/\/dock.codes","rating":0,"author_block_rating":0,"active_installs":0,"downloads":48,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"jacycha","date":"2026-03-24 17:04:33"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-256x256.jpg":{"filename":"icon-256x256.jpg","revision":3490219,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[2679,29196,1522,5603],"plugin_category":[54,59],"plugin_contributors":[236444],"plugin_business_model":[],"class_list":["post-289135","plugin","type-plugin","status-publish","hentry","plugin_tags-debugging","plugin_tags-error-tracking","plugin_tags-logging","plugin_tags-monitoring","plugin_category-security-and-spam-protection","plugin_category-utilities-and-tools","plugin_contributors-jacycha","plugin_committers-jacycha"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/dockthor\/assets\/icon-256x256.jpg?rev=3490219","icon_2x":"https:\/\/ps.w.org\/dockthor\/assets\/icon-256x256.jpg?rev=3490219","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>DockTHOR integrates WordPress with the THOR monitoring platform and automatically reports PHP errors and uncaught exceptions.<\/p>\n\n<p>The plugin is designed to work silently in the background and has no admin interface. After installation you only need to configure your THOR project credentials.<\/p>\n\n<h3>Features:<\/h3>\n\n<ul>\n<li>Automatic reporting of PHP errors and uncaught exceptions<\/li>\n<li>Support for custom error filtering<\/li>\n<li>Optional user context information<\/li>\n<li>Customizable configuration via WordPress constants and filters<\/li>\n<li>Minimal performance overhead<\/li>\n<\/ul>\n\n<p>This plugin is intended for developers and teams who want to monitor errors occurring in WordPress installations.<\/p>\n\nInstallation\n\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/dockthor<\/code> directory, or install the plugin through the WordPress plugins screen.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Configure your THOR credentials in <code>wp-config.php<\/code>.<\/li>\n<\/ol>\n\n<p>Example configuration:\n    <code>php\ndefine( 'DOCK_THOR_TOKEN', 'YOUR_THOR_TOKEN' );\ndefine( 'DOCK_THOR_PRIVATE_KEY', 'YOUR_PRIVATE_KEY' );<\/code>\nOnce configured, the plugin will automatically begin reporting PHP errors.<\/p>\n\nConfiguration\n\n<p>Add the following constants to your <code>wp-config.php<\/code> file.<\/p>\n\n<h3>DockTHOR Token<\/h3>\n\n<p><code>php\ndefine( 'DOCK_THOR_TOKEN', 'YOUR_THOR_TOKEN' );\n    `&lt;h3&gt;Private Key&lt;\/h3&gt;<\/code>php\ndefine( 'DOCK_THOR_PRIVATE_KEY', 'YOUR_PRIVATE_KEY' );\n    `<\/p>\n\n<h3>Error Types (optional)<\/h3>\n\n<p>```php\ndefine( 'DOCK_THOR_ERROR_TYPES', E_ALL &amp; ~E_DEPRECATED &amp; ~E_NOTICE &amp; ~E_USER_DEPRECATED );\n    <code>Define which PHP errors should be captured.&lt;h3&gt;Send Default PII (optional)&lt;\/h3&gt;\nIf enabled, additional context such as the logged-in user and IP address will be attached to the event.<\/code>php\ndefine( 'DOCK_THOR_SEND_DEFAULT_PII', true );\n    <code>&lt;h3&gt;Site Version (optional)&lt;\/h3&gt;\nDefine the version of your website. This can help track which version of the site generated an error.<\/code>php\ndefine( 'DOCK_THOR_VERSION', 'v1.0.0' );\n    <code>&lt;h3&gt;Environment (optional)&lt;\/h3&gt;\nDefine the current environment.<\/code>php\ndefine( 'DOCK_THOR_ENV', 'production' );\n    `<\/p>\n\nFilters\n\n<p>DockTHOR provides several filters that allow developers to customize behavior.<\/p>\n\n<h3>dock_thor_user_context<\/h3>\n\n<p>Allows extending the user context sent to THOR.<\/p>\n\n<p>Example:\n    <code>php\nadd_filter( 'dock_thor_user_context', function ( array $user ) {\n    return array_merge( $user, ['custom_meta' =&gt; 'value'] );\n});<\/code><\/p>\n\n<p>Note: These values may be exposed publicly when used in JavaScript trackers.<\/p>\n\n<h3>dock_thor_token<\/h3>\n\n<p>Allows overriding the THOR token.<\/p>\n\n<p>Example:\n    <code>php\nadd_filter( 'dock_thor_token', function ( $token ) {\n    return 'xxxxxxxxxxxxxxxxxxxx';\n});<\/code>\nUsing the <code>DOCK_THOR_TOKEN<\/code> constant is recommended instead.<\/p>\n\n<h3>dock_thor_scope<\/h3>\n\n<p>Allows modifying the THOR scope before events are sent.<\/p>\n\n<p>Example:\n    <code>php\nadd_filter( 'dock_thor_scope', function ( \\Dock\\Thor\\State\\Scope $scope ) {\n    $scope-&gt;setTag('custom-tag', 'value');\n    return $scope;\n});<\/code><\/p>\n\n<h3>dock_thor_options<\/h3>\n\n<p>Allows customizing THOR SDK options.<\/p>\n\n<p>Example:\n    <code>php\nadd_filter( 'dock_thor_options', function ( \\Dock\\Thor\\Options $options ) {\n    $options-&gt;setSampleRate(0.9);\n    return $options;\n});<\/code><\/p>\n\nAdvanced Usage\n\n<h3>High volume of notices<\/h3>\n\n<p>Some plugins generate large amounts of PHP notices. You can filter them out:\n    <code>php\ndefine( 'DOCK_THOR_ERROR_TYPES', E_ALL &amp; ~E_NOTICE );<\/code><\/p>\n\n<h3>Capturing handled exceptions<\/h3>\n\n<p>If you want to report handled exceptions:\n    <code>php\ntry {\n    myMethodThatCanThrowAnException();\n} catch ( \\Exception $e ) {\n    if ( function_exists( 'dock_thor_safe' ) ) {\n        dock_thor_safe( function ( \\Dock\\Thor\\State\\HubInterface $client ) use ( $e ) {\n            $client-&gt;captureException( $e );\n        });\n    }\n    wp_die( 'An error occurred.' );\n}<\/code><\/p>\n\nFrequently Asked Questions\n\n<h4>Does this plugin have an admin panel?<\/h4>\n\n<p>No. DockTHOR works automatically after configuration in <code>wp-config.php<\/code>.<\/p>\n\n<h4>Will this slow down my site?<\/h4>\n\n<p>The plugin is designed to have minimal performance impact. Error events are sent asynchronously when possible.<\/p>\n\n<h4>Can I disable certain errors?<\/h4>\n\n<p>Yes. You can configure the error types captured using the <code>DOCK_THOR_ERROR_TYPES<\/code> constant.<\/p>\n\n<!--section=changelog-->\n<h3>1.0.0<\/h3>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>\n\nLicense\n\n<p>The Assist For WCAG plugin is licensed under the GNU General Public License v2.0 or later (GPLv2+), as required by WordPress. This means the plugin\u2019s source code is open and can be modified, copied, and redistributed under the terms of the GPL.<\/p>","raw_excerpt":"DockTHOR is a lightweight WordPress integration for sending PHP errors and exceptions to the THOR monitoring platform.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/289135","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=289135"}],"author":[{"embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jacycha"}],"wp:attachment":[{"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=289135"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=289135"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=289135"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=289135"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=289135"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=289135"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}