{"id":381597,"date":"2026-10-08T07:59:19","date_gmt":"2026-10-08T07:59:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/integration-for-prolitteris\/"},"modified":"2026-10-08T09:40:56","modified_gmt":"2026-10-08T09:40:56","slug":"palasthotel-integration-for-prolitteris","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/palasthotel-integration-for-prolitteris\/","author":14867054,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.1.1","stable_tag":"2.1.1","tested":"7.1.3","requires":"6.6","requires_php":"8.2","requires_plugins":null,"header_name":"Palasthotel Integration for ProLitteris","header_author":"Palasthotel <webmaster@palasthotel.de>","header_description":"Adds the ProLitteris tracking pixel to posts and reports texts to ProLitteris (\"Onlinewerke entsch\u00e4digen\").","assets_banners_color":"989898","last_updated":"2026-10-08 09:40:56","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/palasthotel.de\/","header_plugin_uri":"https:\/\/github.com\/palasthotel\/wp-palasthotel-integration-for-prolitteris","header_author_uri":"https:\/\/palasthotel.de","rating":0,"author_block_rating":0,"active_installs":0,"downloads":105,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.1.0":{"tag":"2.1.0","author":"palasthotel","date":"2026-10-08 07:59:01","revision":3733953},"2.1.1":{"tag":"2.1.1","author":"palasthotel","date":"2026-10-08 09:40:56","revision":3734149}},"upgrade_notice":{"2.0.0":"<p>New folder and text domain: deactivate the old plugin &quot;ProLitteris&quot; first. Rename the wp-config.php constants: PH_PRO_LITTERIS to PRO_LITTERIS_ENABLED, PH_PRO_LITTERIS_SYSTEM to PRO_LITTERIS_SYSTEM, PH_PRO_LITTERIS_CREDENTIALS to PRO_LITTERIS_CREDENTIALS. Fixes security issues.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3734149,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3734149,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3734149,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3734149,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.1.0","2.1.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3733953,"resolution":"1","location":"assets","locale":"","width":1280,"height":1000},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3733953,"resolution":"2","location":"assets","locale":"","width":1280,"height":640},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3733953,"resolution":"3","location":"assets","locale":"","width":1280,"height":911},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3733953,"resolution":"4","location":"assets","locale":"","width":526,"height":292},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3733953,"resolution":"5","location":"assets","locale":"","width":820,"height":327},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3733953,"resolution":"6","location":"assets","locale":"","width":1280,"height":880}},"screenshots":{"1":"The ProLitteris sidebar in the block editor: the post's counting pixel and the report with its text, authors and image originators, ready to be sent.","2":"The ProLitteris column in the posts list shows which posts are reported, ready to report or too short.","3":"Settings \u2192 ProLitteris: credentials, automatic reporting, minimum length and the size of the pixel pool.","4":"The dashboard widget lists the posts that will be reported next and refills the pixel pool on demand.","5":"The ProLitteris member number and name on a user profile.","6":"The image originator of a media file, reported along with the posts that use the image."}},"plugin_section":[262246],"plugin_tags":[2972,284955,284953,284954,9090],"plugin_category":[],"plugin_contributors":[85158,274076,138992],"plugin_business_model":[],"class_list":["post-381597","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-copyright","plugin_tags-counting-pixel","plugin_tags-prolitteris","plugin_tags-remuneration","plugin_tags-switzerland","plugin_contributors-edwardbock","plugin_contributors-janaeggebrecht","plugin_contributors-palasthotel","plugin_committers-palasthotel"],"banners":{"banner":"https:\/\/ps.w.org\/palasthotel-integration-for-prolitteris\/assets\/banner-772x250.png?rev=3734149","banner_2x":"https:\/\/ps.w.org\/palasthotel-integration-for-prolitteris\/assets\/banner-1544x500.png?rev=3734149","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/palasthotel-integration-for-prolitteris\/assets\/icon-128x128.png?rev=3734149","icon_2x":"https:\/\/ps.w.org\/palasthotel-integration-for-prolitteris\/assets\/icon-256x256.png?rev=3734149","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/palasthotel-integration-for-prolitteris\/assets\/screenshot-1.png?rev=3733953","caption":"The ProLitteris sidebar in the block editor: the post's counting pixel and the report with its text, authors and image originators, ready to be sent."},{"src":"https:\/\/ps.w.org\/palasthotel-integration-for-prolitteris\/assets\/screenshot-2.png?rev=3733953","caption":"The ProLitteris column in the posts list shows which posts are reported, ready to report or too short."},{"src":"https:\/\/ps.w.org\/palasthotel-integration-for-prolitteris\/assets\/screenshot-3.png?rev=3733953","caption":"Settings \u2192 ProLitteris: credentials, automatic reporting, minimum length and the size of the pixel pool."},{"src":"https:\/\/ps.w.org\/palasthotel-integration-for-prolitteris\/assets\/screenshot-4.png?rev=3733953","caption":"The dashboard widget lists the posts that will be reported next and refills the pixel pool on demand."},{"src":"https:\/\/ps.w.org\/palasthotel-integration-for-prolitteris\/assets\/screenshot-5.png?rev=3733953","caption":"The ProLitteris member number and name on a user profile."},{"src":"https:\/\/ps.w.org\/palasthotel-integration-for-prolitteris\/assets\/screenshot-6.png?rev=3733953","caption":"The image originator of a media file, reported along with the posts that use the image."}],"raw_content":"<!--section=description-->\n<p>ProLitteris remunerates authors and publishers in Switzerland and Liechtenstein for texts published online (\"Onlinewerke entsch\u00e4digen\", also called \"Verteilung Online\"). Views are counted with a counting pixel on each text, and the publisher reports the texts to ProLitteris.<\/p>\n\n<p>This plugin does both from within WordPress:<\/p>\n\n<ul>\n<li>fetches counting pixels from ProLitteris and keeps a pool of unassigned ones<\/li>\n<li>assigns a pixel to each post and renders it on the page, in the paywall variant if you tell it a post is behind a paywall<\/li>\n<li>builds the report from the post: title, plain text, authors and image originators with their ProLitteris member numbers<\/li>\n<li>reports posts from the block editor sidebar, or automatically every hour<\/li>\n<li>shows in the posts list which posts are reported, ready to report or too short<\/li>\n<li>adds the ProLitteris member number and name to user profiles, and an image originator to media files<\/li>\n<\/ul>\n\n<p>You need a contract with ProLitteris for \"Onlinewerke entsch\u00e4digen\" and the API credentials of your ProLitteris account. This plugin is not affiliated with or endorsed by ProLitteris.<\/p>\n\n<h4>Developers<\/h4>\n\n<p>Filters and actions, for example to enable more post types, add co-authors or prevent pixels on certain posts, are documented in the <a href=\"https:\/\/github.com\/palasthotel\/wp-palasthotel-integration-for-prolitteris\">repository on GitHub<\/a>.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the web service of ProLitteris (\"OWEN\", <code>https:\/\/owen.prolitteris.ch<\/code>), which is needed to take part in \"Onlinewerke entsch\u00e4digen\". Nothing is sent before the integration is enabled and the credentials are entered.<\/p>\n\n<ul>\n<li><strong>Fetching counting pixels:<\/strong> every hour, and when an editor refills the pool from the dashboard, the plugin requests as many new counting pixels as are missing from the pool. The request carries your ProLitteris credentials.<\/li>\n<li><strong>Reporting a text:<\/strong> when a post is reported, from the block editor or automatically, the plugin sends its title, its plain text, its counting pixel and, for every author and image originator, the ProLitteris member number, first name, last name and WordPress user id.<\/li>\n<li><strong>Counting views:<\/strong> every post with a counting pixel embeds an image loaded from a ProLitteris server (<code>*.owen.prolitteris.ch<\/code>). The visitor's browser loads it, transmitting the visitor's IP address, the page address and browser information. ProLitteris has the views counted by Kantar GmbH using the Scalable Central Measurement Method (SZM).<\/li>\n<\/ul>\n\n<p>The service is provided by ProLitteris, Swiss Copyright Society for Literature and Visual Art, Zurich: <a href=\"https:\/\/oms.prolitteris.ch\/XX0\/TermsOfUse\">terms of use<\/a>, <a href=\"https:\/\/prolitteris.ch\/datenschutzerklaerung\/\">privacy policy<\/a>. The plugin suggests a paragraph for your own privacy policy under Settings \u2192 Privacy.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install the plugin through the \"Plugins\" screen in WordPress, or upload the <code>palasthotel-integration-for-prolitteris<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate it.<\/li>\n<li>Go to Settings \u2192 ProLitteris, enable the integration and enter your member number, username and password.<\/li>\n<li>Enter the ProLitteris member number and name of each author on their user profile.<\/li>\n<\/ol>\n\n<p>The connection can also be configured in <code>wp-config.php<\/code>, which takes precedence over the settings page:<\/p>\n\n<pre><code>define( 'PRO_LITTERIS_ENABLED', true );\ndefine( 'PRO_LITTERIS_SYSTEM', 'https:\/\/owen.prolitteris.ch' );\ndefine( 'PRO_LITTERIS_CREDENTIALS', 'member number:username:password' );\ndefine( 'PRO_LITTERIS_AUTO_MESSAGES', true );\n<\/code><\/pre>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20posts%20get%20a%20pixel%3F\"><h3>Which posts get a pixel?<\/h3><\/dt>\n<dd><p>Posts of the post type <code>post<\/code>. More post types can be added with the <code>pro_litteris_post_types<\/code> filter.<\/p><\/dd>\n<dt id=\"why%20can%20a%20post%20not%20be%20reported%3F\"><h3>Why can a post not be reported?<\/h3><\/dt>\n<dd><p>ProLitteris only remunerates texts with at least 1500 characters, and every author needs a ProLitteris member number and a first and last name on their profile. Hover the icon in the ProLitteris column of the posts list to see the reason.<\/p><\/dd>\n<dt id=\"what%20happened%20to%20the%20plugin%20%22prolitteris%22%20%28pro-litteris%29%3F\"><h3>What happened to the plugin \"ProLitteris\" (pro-litteris)?<\/h3><\/dt>\n<dd><p>It is this plugin. Up to version 1.6.4 it was only available on GitHub, installed in the folder <code>pro-litteris<\/code>. Since 2.0.0 it has a new name, folder and text domain and is published on wordpress.org: deactivate the old plugin before activating this one. Pixels, reports and settings are kept, they are stored in the database. If you configured it in <code>wp-config.php<\/code>, rename the constants: <code>PH_PRO_LITTERIS<\/code> to <code>PRO_LITTERIS_ENABLED<\/code>, <code>PH_PRO_LITTERIS_SYSTEM<\/code> to <code>PRO_LITTERIS_SYSTEM<\/code> and <code>PH_PRO_LITTERIS_CREDENTIALS<\/code> to <code>PRO_LITTERIS_CREDENTIALS<\/code>; the old names are no longer read. <code>PRO_LITTERIS_AUTO_MESSAGES<\/code> stays as it is.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.1.1<\/h4>\n\n<p><strong>Bug Fixes<\/strong>\n* name the dashboard widget ProLitteris like the rest of the plugin (2d44cd0)\n* report automatically and list on the dashboard only posts with the minimum length (7e65f5c)<\/p>\n\n<h4>2.1.0<\/h4>\n\n<p><strong>\u26a0 BREAKING CHANGES<\/strong>\n* the plugin folder, main file and text domain are now palasthotel-integration-for-prolitteris. Installs of 2.0.0 (folder integration-for-prolitteris) have to deactivate it and install this one; pixels, reports and settings are kept.<\/p>\n\n<p><strong>Features<\/strong>\n* get translations from translate.wordpress.org, translate the editor sidebar (98495c0)\n* rename to \"Palasthotel Integration for ProLitteris\" (ab4ea39)<\/p>\n\n<p><strong>Bug Fixes<\/strong>\n* address the wordpress.org review (pixels only when enabled, admin notices, translations) (c2b47c2)\n* render and assign counting pixels only with the integration enabled (fcdc4bd)\n* show the plugin's admin notices to administrators only, on the plugins screen and dashboard (4789515)<\/p>\n\n<p><strong>Miscellaneous<\/strong>\n* release 2.1.0 (e471a85)<\/p>\n\n<h4>2.0.1<\/h4>\n\n<p><strong>Bug Fixes<\/strong>\n* declare Tested up to only in readme.txt (d86c8b5)\n* declare Tested up to only in readme.txt (bf68c6e)<\/p>\n\n<h4>2.0.0<\/h4>\n\n<p><strong>\u26a0 BREAKING CHANGES<\/strong>\n* PALASTHOTEL_COMPOSER_CENTRAL, the palasthotel\/central_autoloader_loaded action and PH_CENTRAL_AUTOLOADER_DEBUG no longer have any effect. Install the plugin from wordpress.org (or wpackagist-plugin\/integration-for-prolitteris) instead of from the Git repository.\n* rename the constants in wp-config.php, the old names are no longer read and the integration stays off without them: PH_PRO_LITTERIS \u2192 PRO_LITTERIS_ENABLED, PH_PRO_LITTERIS_SYSTEM \u2192 PRO_LITTERIS_SYSTEM, PH_PRO_LITTERIS_CREDENTIALS \u2192 PRO_LITTERIS_CREDENTIALS. PRO_LITTERIS_AUTO_MESSAGES is unchanged.\n* new plugin folder, main file and text domain. Deactivate \"ProLitteris\" (pro-litteris) before activating \"Integration for ProLitteris\". Namespace, classes, hooks, REST fields, options, meta and tables are unchanged, so data and project code keep working.<\/p>\n\n<p><strong>Features<\/strong>\n* add bootstrap to check for central autoloader (c342d70)\n* introduce ph-central-autoloader-debug constant (4ae8792)\n* name all wp-config.php constants PRO_LITTERIS_* (2d6ec71)\n* ship as \"Integration for ProLitteris\" for wordpress.org (850270c)<\/p>\n\n<p><strong>Bug Fixes<\/strong>\n* bug where it couldn't find the autoloader (e36c8da)\n* declare the properties of Pixel (ec8d070)\n* error counting when reporting pixel (67ddaf5)\n* escape and translate the admin output, keep names with apostrophes (7841d8e)\n* escape the pixel url, error titles and attachment author options (7f8e527)\n* expose only the pixel of the pro_litteris REST field to visitors (88d6ff4)\n* limit the ProLitteris dashboard widget to editors, add a nonce (660b6c7)\n* load the editor sidebar from @wordpress\/editor, update the WordPress packages (542ff00)\n* remove dynamic property declaration (8fe06f2)\n* verify the TLS certificate of the ProLitteris API (6b6c0fb)<\/p>\n\n<p><strong>Code Refactoring<\/strong>\n* drop the support for the Palasthotel central autoloader (c86488e)<\/p>\n\n<h4>1.6.4<\/h4>\n\n<ul>\n<li>Fix: Remove dynamic property declaration<\/li>\n<\/ul>\n\n<h4>1.6.2<\/h4>\n\n<ul>\n<li>Feature: Add support for Palasthotel central autoloader<\/li>\n<\/ul>\n\n<h4>1.6.1<\/h4>\n\n<ul>\n<li>Update: Rework file structure<\/li>\n<\/ul>\n\n<h4>1.6.0<\/h4>\n\n<ul>\n<li>Feature: filter for paywall pixel variant<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>Feature: Post reporting updatable<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Feature: Always add pixels, but limit reporting if conditions are not met<\/li>\n<\/ul>\n\n<h4>1.3.2<\/h4>\n\n<ul>\n<li>Bugfix: Ignore invalid user id as participants<\/li>\n<li>Update: packages<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Images from gallery blocks with innerBlock images are detected<\/li>\n<li>Dependency updates<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Update: Default min chars count for pixels is now 1500 instead of 2000<\/li>\n<li>Feature: Two new action before and after the message text body is generated<\/li>\n<\/ul>\n\n<h4>1.2.6<\/h4>\n\n<ul>\n<li>Bugfix: User meta won't be saved<\/li>\n<li>Performance issue fix<\/li>\n<\/ul>\n\n<h4>1.2.5<\/h4>\n\n<ul>\n<li>Optimization: Push message error logging<\/li>\n<\/ul>\n\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>Optimization: place referrer meta tag in header<\/li>\n<li>Bugfix: database year -1 breaks query<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Feature: Add image authorship to ProLitteris reporting.<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Bugfix: Gutenberg script was enqueued even if no rest endpoint for post type existed<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Feature: Migrate support<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Gutenberg: Moved meta box into Gutenberg sidebar<\/li>\n<li>Performance: Moved data to custom tables<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>First release<\/li>\n<\/ul>","raw_excerpt":"Counting pixels and automated text reports for \"Onlinewerke entsch\u00e4digen\" of ProLitteris, the Swiss collective rights management organization.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/381597","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=381597"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/palasthotel"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=381597"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=381597"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=381597"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=381597"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=381597"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=381597"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}