{"id":96488,"date":"2019-01-08T13:36:31","date_gmt":"2019-01-08T13:36:31","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/zotero-notes\/"},"modified":"2026-10-16T07:24:27","modified_gmt":"2026-10-16T07:24:27","slug":"zotero-notes","status":"publish","type":"plugin","link":"https:\/\/te.wordpress.org\/plugins\/zotero-notes\/","author":261219,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.3.1","stable_tag":"1.3.1","tested":"7.1.3","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Zotero Notes","header_author":"Janiko","header_description":"Footnotes references using Zotero","assets_banners_color":"","last_updated":"2026-10-16 07:24:27","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/geba.fr","rating":5,"author_block_rating":0,"active_installs":10,"downloads":2758,"num_ratings":1,"support_threads":1,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.2.3":{"tag":"1.2.3","author":"janiko","date":"2024-10-13 18:10:28","revision":3168057},"1.3.0":{"tag":"1.3.0","author":"janiko","date":"2026-10-15 20:27:31","revision":3749264},"1.3.1":{"tag":"1.3.1","author":"janiko","date":"2026-10-16 07:24:27","revision":3749852}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":"1"},"assets_icons":{"icon-128x128.jpg":{"filename":"icon-128x128.jpg","revision":3168054,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-128x128.png":{"filename":"icon-128x128.png","revision":3168073,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.jpg":{"filename":"icon-256x256.jpg","revision":3168054,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3168073,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.2.3","1.3.0","1.3.1"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":2008440,"resolution":"1","location":"assets","locale":"","width":924,"height":466},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":2008440,"resolution":"2","location":"assets","locale":"","width":683,"height":414}},"screenshots":[]},"plugin_section":[],"plugin_tags":[1807,1850,1847,27249],"plugin_category":[44],"plugin_contributors":[86192],"plugin_business_model":[],"class_list":["post-96488","plugin","type-plugin","status-publish","hentry","plugin_tags-citation","plugin_tags-footnotes","plugin_tags-references","plugin_tags-zotero","plugin_category-discussion-and-community","plugin_contributors-janiko","plugin_committers-janiko"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/zotero-notes\/assets\/icon-128x128.png?rev=3168073","icon_2x":"https:\/\/ps.w.org\/zotero-notes\/assets\/icon-256x256.png?rev=3168073","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/zotero-notes\/assets\/screenshot-1.jpg?rev=2008440","caption":""},{"src":"https:\/\/ps.w.org\/zotero-notes\/assets\/screenshot-2.jpg?rev=2008440","caption":""}],"raw_content":"<!--section=description-->\n<h4>English<\/h4>\n\n<p>Zotero Notes inserts numbered citations and a references list on individual posts or pages. It retrieves bibliographic data through the Zotero API over HTTPS with TLS certificate verification.<\/p>\n\n<p><strong>Shortcode examples<\/strong> (the shortcode name can be changed in Settings):<\/p>\n\n<ul>\n<li><code>[zref]VP5PKI56[\/zref]<\/code><\/li>\n<li><code>[zref name=\"source\"]VP5PKI56[\/zref]<\/code><\/li>\n<li><code>[zref name=\"source\" \/]<\/code> (reuse a previously named reference)<\/li>\n<\/ul>\n\n<p>Configure your Zotero user ID and, for private libraries, your API key under Settings &gt; Zotero Notes. The key is kept server-side; leaving the key field blank when editing settings preserves the saved value. The plugin does not modify article content in the database and preserves the historical shortcode and option keys.<\/p>\n\n<p><strong>Cache and availability limitations<\/strong><\/p>\n\n<ul>\n<li>First retrieval requires Zotero API access and a valid user ID (plus an authorized API key for private libraries). Without a previous successful retrieval, no fallback copy is available.<\/li>\n<li>Successful responses remain fresh for 12 hours by default (configurable between 1 and 168 hours). After expiry, the plugin attempts to refresh them.<\/li>\n<li>During temporary network or API failures, the last successfully retrieved response may be displayed. <strong>It can be outdated<\/strong> and does not guarantee that the reference is current or still exists in Zotero. After a temporary failure, retries are delayed (currently five minutes).<\/li>\n<li>HTTP 401, 403 and 404 responses do not trigger the stale fallback. A manual purge removes fresh and last-known-good copies; Zotero must then be reachable to retrieve those references again.<\/li>\n<li>Changes made in Zotero are not pushed to the plugin instantly. If Zotero is unavailable and no valid cached response exists, the reference cannot be rendered.<\/li>\n<\/ul>\n\n<h4>Fran\u00e7ais<\/h4>\n\n<p>Zotero Notes ajoute des appels de notes num\u00e9rot\u00e9s et une bibliographie \u00e0 la fin des articles et pages consult\u00e9s individuellement. Les r\u00e9f\u00e9rences proviennent de l'API Zotero, interrog\u00e9e en HTTPS avec v\u00e9rification du certificat TLS.<\/p>\n\n<p><strong>Exemples de shortcodes<\/strong> (le nom du shortcode peut \u00eatre personnalis\u00e9 dans les r\u00e9glages) :<\/p>\n\n<ul>\n<li><code>[zref]VP5PKI56[\/zref]<\/code><\/li>\n<li><code>[zref name=\"source\"]VP5PKI56[\/zref]<\/code><\/li>\n<li><code>[zref name=\"source\" \/]<\/code> (r\u00e9utilisation d'une r\u00e9f\u00e9rence nomm\u00e9e)<\/li>\n<\/ul>\n\n<p>Renseignez l'identifiant Zotero et, pour une biblioth\u00e8que priv\u00e9e, la cl\u00e9 API dans R\u00e9glages &gt; Zotero Notes. La cl\u00e9 reste c\u00f4t\u00e9 serveur et laisser son champ vide lors de la modification des r\u00e9glages pr\u00e9serve la valeur enregistr\u00e9e. L'extension ne modifie pas les contenus en base de donn\u00e9es et conserve les shortcodes et options historiques.<\/p>\n\n<p><strong>Limites d'acc\u00e8s et de cache<\/strong><\/p>\n\n<ul>\n<li>La premi\u00e8re r\u00e9cup\u00e9ration n\u00e9cessite un acc\u00e8s \u00e0 l'API Zotero, un identifiant valide et, pour les biblioth\u00e8ques priv\u00e9es, une cl\u00e9 autoris\u00e9e. Sans r\u00e9cup\u00e9ration pr\u00e9alable r\u00e9ussie, aucune copie de secours n'est disponible.<\/li>\n<li>Les r\u00e9ponses restent fra\u00eeches pendant 12 heures par d\u00e9faut (dur\u00e9e r\u00e9glable entre 1 et 168 heures). Pass\u00e9 ce d\u00e9lai, l'extension tente une actualisation.<\/li>\n<li>En cas d'\u00e9chec temporaire du r\u00e9seau ou de l'API, la derni\u00e8re r\u00e9ponse valide peut \u00eatre affich\u00e9e. <strong>Elle peut \u00eatre p\u00e9rim\u00e9e<\/strong> et ne garantit ni l'actualit\u00e9 ni la pr\u00e9sence de la r\u00e9f\u00e9rence dans Zotero. Les nouveaux essais sont espac\u00e9s (actuellement cinq minutes).<\/li>\n<li>Les r\u00e9ponses HTTP 401, 403 et 404 ne d\u00e9clenchent pas le repli sur la derni\u00e8re valeur. Une purge manuelle efface les copies fra\u00eeches et les copies de secours : un nouvel acc\u00e8s \u00e0 Zotero sera alors n\u00e9cessaire.<\/li>\n<li>Les changements effectu\u00e9s dans Zotero ne sont pas r\u00e9percut\u00e9s instantan\u00e9ment. Sans acc\u00e8s \u00e0 Zotero ni r\u00e9ponse conserv\u00e9e valide, la r\u00e9f\u00e9rence ne peut pas \u00eatre affich\u00e9e.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<h4>English<\/h4>\n\n<ol>\n<li>Install and activate Zotero Notes.<\/li>\n<li>Open Settings &gt; Zotero Notes and enter your Zotero user ID and, where needed, API key.<\/li>\n<li>Insert the shortcode into a post or page. Do not rename a shortcode already used in published content.<\/li>\n<\/ol>\n\n<h4>Fran\u00e7ais<\/h4>\n\n<ol>\n<li>Installez et activez Zotero Notes.<\/li>\n<li>Ouvrez R\u00e9glages &gt; Zotero Notes et renseignez votre identifiant Zotero et, si n\u00e9cessaire, votre cl\u00e9 API.<\/li>\n<li>Ins\u00e9rez le shortcode dans un article ou une page. Ne renommez pas un shortcode d\u00e9j\u00e0 utilis\u00e9 dans des contenus publi\u00e9s.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20plugin%20require%20javascript%3F%20%2F%20l%27extension%20utilise-t-elle%20javascript%20%3F\"><h3>Does the plugin require JavaScript? \/ L'extension utilise-t-elle JavaScript ?<\/h3><\/dt>\n<dd><p>No. Rendering, HTTP requests and cache management are implemented in PHP.<\/p>\n\n<p>Non. L'affichage, les requ\u00eates HTTP et le cache sont g\u00e9r\u00e9s en PHP.<\/p><\/dd>\n<dt id=\"can%20i%20clear%20the%20cache%3F%20%2F%20peut-on%20vider%20le%20cache%20%3F\"><h3>Can I clear the cache? \/ Peut-on vider le cache ?<\/h3><\/dt>\n<dd><p>Yes, in Settings &gt; Zotero Notes. This also removes the last-known-good fallback copies.<\/p>\n\n<p>Oui, depuis R\u00e9glages &gt; Zotero Notes. Cela supprime \u00e9galement les derni\u00e8res copies valides utilis\u00e9es en secours.<\/p><\/dd>\n<dt id=\"how%20quickly%20do%20zotero%20updates%20appear%3F%20%2F%20quand%20les%20changements%20zotero%20apparaissent-ils%20%3F\"><h3>How quickly do Zotero updates appear? \/ Quand les changements Zotero apparaissent-ils ?<\/h3><\/dt>\n<dd><p>A cached reference is refreshed after its freshness interval (12 hours by default). During a temporary outage, the previously saved value can remain visible.<\/p>\n\n<p>Une r\u00e9f\u00e9rence conserv\u00e9e en cache est actualis\u00e9e apr\u00e8s sa dur\u00e9e de fra\u00eecheur (12 heures par d\u00e9faut). En cas d'indisponibilit\u00e9 temporaire, l'ancienne valeur peut rester affich\u00e9e.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Fixed bibliography formatting and restored the compact layout.<\/li>\n<li>Fixed ISO 8601 date formatting.<\/li>\n<li>Preserved theme-controlled link colors.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Documented Zotero API access requirements, cache expiration and stale fallback limitations (English and French).<\/li>\n<li>Restored compact bibliography styling and historical quotation marks; normalized ISO timestamps into the site date format where unambiguous.<\/li>\n<li>Secure WordPress HTTP API requests with TLS certificate verification.<\/li>\n<li>Resilient cache with configurable freshness, manual purge and last-valid fallback.<\/li>\n<li>Safer HTML output, compatibility with PHP 8 and singular-only rendering.<\/li>\n<li>Kept existing shortcodes and the <code>zotero_notes_option_name<\/code> setting.<\/li>\n<li>Fran\u00e7ais : refonte du cache, s\u00e9curisation des appels HTTP et de l'affichage.<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Earlier security and escaping changes.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Display rules modified.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Language parameter updated.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Added support for pages.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Initial caching.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First public release.<\/li>\n<\/ul>","raw_excerpt":"Add footnote citations from a Zotero library, with a secure API connection and resilient caching.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/96488","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=96488"}],"author":[{"embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/janiko"}],"wp:attachment":[{"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=96488"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=96488"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=96488"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=96488"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=96488"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=96488"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}