{"id":11283,"date":"2026-05-29T01:29:48","date_gmt":"2026-05-28T17:29:48","guid":{"rendered":"https:\/\/aeosub.com\/citatly-daily-quote\/"},"modified":"2026-05-29T01:29:48","modified_gmt":"2026-05-28T17:29:48","slug":"citatly-daily-quote","status":"publish","type":"post","link":"https:\/\/aeosub.com\/zh\/citatly-daily-quote\/","title":{"rendered":"Citatly &#8211; Daily Quote"},"content":{"rendered":"<div class=\"post-img\" style=\"margin-bottom: 25px\"><img decoding=\"async\" src=\"https:\/\/ps.w.org\/citatly-daily-quote\/assets\/banner-1544x500.jpg?rev=3552531\" alt=\"Citatly \u2013 Daily Quote\" style=\"width: 100%;height: auto;border-radius: 12px\"><\/div>\n<div class=\"plugin-info-card\" style=\"border: 1px solid #e2e8f0;border-radius: 10px;overflow: hidden;margin-bottom: 30px;font-family: -apple-system, system-ui, sans-serif;background: #fff\">\n<table style=\"width: 100%;border-collapse: collapse;font-size: 14px\">\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 15px 20px;text-align: left;width: 35%;color: #4a5568;background: #fcfcfc\"><img decoding=\"async\" src=\"https:\/\/ps.w.org\/citatly-daily-quote\/assets\/icon-256x256.png?rev=3552548\" style=\"width: 40px;height: 40px;border-radius: 6px;margin-right: 12px;vertical-align: middle\"> Developer<\/th>\n<td style=\"padding: 15px 20px;font-weight: 500\"><a href=\"https:\/\/profiles.wordpress.org\/dieter93\/\" target=\"_blank\" rel=\"noopener\">Dieter Geiling<\/a><\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Version<\/th>\n<td style=\"padding: 12px 20px\">v1.3.5<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Active Installs<\/th>\n<td style=\"padding: 12px 20px\">0 +<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Requires \/ Tested<\/th>\n<td style=\"padding: 12px 20px\">6.0 \/ 7.0<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Last Updated<\/th>\n<td style=\"padding: 12px 20px\">2026-05-28 4:55pm GMT<\/td>\n<\/tr>\n<tr>\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Official Link<\/th>\n<td style=\"padding: 12px 20px\"><a href=\"https:\/\/wordpress.org\/plugins\/citatly-daily-quote\/\" target=\"_blank\" style=\"text-decoration: none;color: #4a3bca;font-weight: bold\" rel=\"noopener\">View Details \u2192<\/a><\/td>\n<\/tr>\n<\/table><\/div>\n<div class=\"plugin-short-desc\" style=\"margin: 20px 0;padding: 12px 15px;background: #f9fafb;border-left: 4px solid #4a3bca;border-radius: 6px;font-style: italic;color: #4a5568\">Display a new quote every day \u2014 delivered cache-safely via the WordPress REST API.<\/div>\n<p>Citatly (Daily Quote) adds a dedicated custom post type for quotes and automatically displays one of them each day on your website.<\/p>\n<p>The displayed quote changes once per day and is selected deterministically based on the current date \u2014 no randomness involved, so every visitor sees the same quote on the same day. Delivery is cache-safe via a REST API endpoint that sends appropriate HTTP caching headers, making it fully compatible with full-page caches and CDNs.<\/p>\n<p><strong>Live demo &amp; documentation:<\/strong> See the plugin in action at https:\/\/citatly.com<\/p>\n<p><strong>F\u00fcr deutschsprachige Nutzer:<\/strong><\/p>\n<p>Das Plugin \u201eZitat des Tages&#8221; ist vollst\u00e4ndig auf Deutsch \u00fcbersetzt (de_DE). Es zeigt t\u00e4glich ein neues Zitat aus deiner eigenen Sammlung \u2014 cache-sicher, ohne externe Abh\u00e4ngigkeiten und ohne API-Schl\u00fcssel. Live-Demo &amp; Dokumentation auf Deutsch: https:\/\/citatly.com\/de\/<\/p>\n<p><strong>Features:<\/strong><\/p>\n<ul>\n<li>Custom post type &#8220;Quotes&#8221; in the WordPress admin<\/li>\n<li>Fields for quote text, author, and an optional extra field (e.g. source, year, or context)<\/li>\n<li>Daily quote rotation \u2014 consistent for all visitors<\/li>\n<li>Embed anywhere with the <code>[citatly]<\/code> shortcode<\/li>\n<li>Optional <code>class<\/code> parameter for individual styling: <code>[citatly class=\"my-style\"]<\/code><\/li>\n<li>Gutenberg block support (requires compiled <code>\/build<\/code> directory)<\/li>\n<li>REST API endpoint <code>\/wp-json\/citatly\/v1\/today<\/code> with HTTP caching headers<\/li>\n<li>Plain text only \u2014 no HTML stored or output, XSS-safe by design<\/li>\n<li>Auto-generated post title from quote text<\/li>\n<li>Import and export quotes as JSON (via admin menu)<\/li>\n<li>Clean uninstall \u2014 removes all plugin data when deleted<\/li>\n<li>Translation-ready (<code>.pot<\/code> file included)<\/li>\n<\/ul>\n<p><strong>How the daily quote is selected:<\/strong><\/p>\n<p>The plugin uses a deterministic algorithm: <code>crc32(date + site_url)<\/code> maps today&#8217;s date to a fixed quote from your collection. A fallback mechanism ensures that the same quote never appears on two consecutive days. This means the quote is stable throughout the day, works correctly even with full-page caching, and does not require any session or cookie.<\/p>\n<p><strong>CSS structure:<\/strong><\/p>\n<p>The plugin does not style the quote output \u2014 all visual styling is left to your theme. The only included CSS handles the skeleton loader during page load.<\/p>\n<pre><code>.citatly \u2014 outer wrapper\n.citatly__text \u2014 the quote text\n.citatly__meta \u2014 wraps author and source\n.citatly__separator \u2014 dash before author (default: \"\u2014 \")\n.citatly__author \u2014 author name\n.citatly__divider \u2014 dot between author and source (default: \" \u00b7 \")\n.citatly__source \u2014 optional extra field\n<\/code><\/pre>\n<h3>Source Code<\/h3>\n<p>The compiled file <code>build\/index.js<\/code> is generated from the human-readable source files in the <code>src\/<\/code> directory using <code>@wordpress\/scripts<\/code>.<\/p>\n<p>The full source code, including all build tools and configuration, is publicly available at:<br \/>\nhttps:\/\/github.com\/dieterDG\/citatly-daily-quote<\/p>\n<p>To regenerate the build files:<\/p>\n<ol>\n<li>Clone the repository<\/li>\n<li>Run <code>npm install<\/code><\/li>\n<li>Run <code>npm run build<\/code><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Display a new quote every day \u2014 delivered cache-safely via the WordPress REST API.<\/p>","protected":false},"author":1,"featured_media":9317,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[252],"tags":[2423,1432,2424,1688,759,555],"class_list":["post-11283","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-trends","tag-daily-quote","tag-quote","tag-quote-of-the-day","tag-quotes","tag-shortcode","tag-wordpress-plugin"],"_links":{"self":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/11283","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/comments?post=11283"}],"version-history":[{"count":0,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/11283\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media\/9317"}],"wp:attachment":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media?parent=11283"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/categories?post=11283"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/tags?post=11283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}