Repository navigation
Releases: johnjanney/digital-business-card-posts
Releases · johnjanney/digital-business-card-posts
Release list
v1.0.1
Patch release: fixes the vCard photo on Android.
Added
REVproperty in the vCard, set from the card's last-modified time in UTC, always the last property beforeEND:VCARD(D30).
Fixed
- The embedded photo was dropped and its base64 text appeared inside the address on Android Contacts.
PHOTOis now emitted beforeADR(matching the reference vCard) andREVfollows it, so the folded base64 block is never the last property in the file (D30).
Install digital-business-card-posts-1.0.1.zip via Plugins → Add New → Upload Plugin (choose "Replace current with uploaded").
v1.0.0
First release. Implements the v1 scope of PROJECTBRIEF.md §2.
Added
- Project documents, repository scaffolding, GPL-2.0-or-later license, build script and PHPCS configuration.
business_cardpost type withcapability_type => 'business_card'andmap_meta_cap, public single view under the configurable rewrite base (defaultcard), excluded from site search.- Activation grants the full capability set to Administrator and Editor and creates the Card Holder role with the "own" capability set (D19). Deactivation keeps roles and capabilities.
- Uninstall removes the role, capabilities, settings and the QR cache; card posts are deleted only when the "Delete data on uninstall" setting is on (D28).
- Admin notice when the PHP GD extension is missing.
- Business Cards list scoped to the current user's cards for users without
edit_others_business_cards(D20). - Card fields registered with
register_post_meta()and exposed to REST, each with a sanitize and auth callback: first/last name, job title, company, tagline, work and mobile phone, email, website, six address fields, logo attachment, accent color andnoindex. - Card details meta box on the classic edit screen with a media picker for the logo and a color picker for the accent color. An empty title is filled from first and last name.
- vCard 3.0 endpoint at
/card/{slug}/vcard/(rewrite rule +template_redirect), built from meta at request time withContent-Type: text/vcard; charset=utf-8,Content-Disposition: attachment; filename="{slug}.vcf", CRLF line endings and 75-octet folding. Unpublished cards return 404 (D16). - Featured image embedded in the vCard as a base64 JPEG resized to 400 × 400 at quality 82 via the WordPress image editor, in memory (D23). Filters
dbcp_vcard_fields,dbcp_vcard_photo_size,dbcp_vcard_photo_quality. - Pure
DBCP_VCard_Builderwith PHPUnit tests for escaping, folding, line endings, TEL types and PHOTO embedding, plus a phpqrcode smoke test (skipped without GD;bin/test-docker.shruns it in a container). - Card page rendered by the plugin through
template_includeas a standalone mobile-first document matching the prototype: logo, name with accent square, title, company, tagline, full-width Save contact button, and contact rows for work phone, mobile, email, website and directions (Google Maps). Per-card accent color, dark-mode variables, focus-visible outlines, system font stack (D14, D21).noindexemits a robots meta tag andX-Robots-Tagheader. - Filters
dbcp_template_path(template override) anddbcp_card_data; actionsdbcp_headanddbcp_footer. - QR code of each published card's permalink generated with phpqrcode at error-correction level H, cached as
wp-content/uploads/digital-business-card-posts/{post_id}.png, regenerated automatically when the permalink changes (D17), deleted with the card. Shown in a QR code box on the edit screen with a Download PNG link. Filterdbcp_qr_module_size. [digital_business_card id="123"]shortcode embedding a published card inside any post or page, with the card stylesheet enqueued.- Settings page (Settings → Digital Business Cards): card URL base, default accent color (color picker), default
noindex, delete data on uninstall. Rewrite rules are flushed when the base changes. Settings link on the Plugins screen. - Translation template
languages/digital-business-card-posts.pot.
Install: upload the attached zip via Plugins → Add New → Upload Plugin. Requires WordPress 6.0+, PHP 7.4+ and the GD extension. See INSTALLATION.md and INSTRUCTIONS.md.
🤖 Generated with Claude Code