{"id":387755,"date":"2026-10-18T14:39:50","date_gmt":"2026-10-18T14:39:50","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/vizito-team-business-cards\/"},"modified":"2026-10-18T14:39:19","modified_gmt":"2026-10-18T14:39:19","slug":"vizito-team-business-cards","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/vizito-team-business-cards\/","author":15763694,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.4","stable_tag":"1.0.4","tested":"7.1.3","requires":"6.2","requires_php":"8.0","requires_plugins":null,"header_name":"Vizito Team Business Cards","header_author":"Asymetria","header_description":"Digital business cards for your whole team, on your own domain: QR codes for print, vCard download, several languages, privacy-friendly statistics.","assets_banners_color":"526eb3","last_updated":"2026-10-18 14:39:19","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/asymetria.com.pl","rating":0,"author_block_rating":0,"active_installs":0,"downloads":55,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.4":{"tag":"1.0.4","author":"asymetria","date":"2026-10-18 14:39:19","revision":3753153}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3753157,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3753157,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3753157,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3753157,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"vizito-team-business-cards\/card":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"vizito-team-business-cards\/card","title":"Team Card","category":"widgets","icon":"id","description":"One person's business card from Vizito Team Business Cards.","keywords":["business card","vcard","team","contact"],"textdomain":"vizito-team-business-cards","attributes":{"cardId":{"type":"number","default":0},"lang":{"type":"string","default":""},"inactive":{"type":"string","enum":["hide","notice"],"default":"hide"}},"supports":{"html":false,"align":["wide"]},"editorScript":"tbcards-block-editor"}},"tagged_versions":["1.0.4"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[51874,206346,1373,3491,82],"plugin_category":[58],"plugin_contributors":[282776],"plugin_business_model":[],"class_list":["post-387755","plugin","type-plugin","status-publish","hentry","plugin_tags-business-card","plugin_tags-digital-business-card","plugin_tags-qr-code","plugin_tags-team","plugin_tags-vcard","plugin_category-user-management","plugin_contributors-asymetria","plugin_committers-asymetria"],"banners":{"banner":"https:\/\/ps.w.org\/vizito-team-business-cards\/assets\/banner-772x250.png?rev=3753157","banner_2x":"https:\/\/ps.w.org\/vizito-team-business-cards\/assets\/banner-1544x500.png?rev=3753157","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/vizito-team-business-cards\/assets\/icon-128x128.png?rev=3753157","icon_2x":"https:\/\/ps.w.org\/vizito-team-business-cards\/assets\/icon-256x256.png?rev=3753157","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Every person on your team gets a mobile business card at a permanent address\non your site, such as <code>example.com\/card\/jane-doe\/<\/code>. Print the QR code on a\npaper business card, a badge or a brochure: people who scan it see a clean,\nfast page with the person's photo, role and contact buttons, and can save the\ncontact to their phone in one tap.<\/p>\n\n<p>No monthly fee per person and no third-party service: the cards, the\naddresses and the statistics stay on your WordPress site.<\/p>\n\n<h4>What a card offers<\/h4>\n\n<ul>\n<li><strong>Save contact<\/strong> \u2014 a vCard 3.0 file with name, company, title, phones,\nemail, address, website, social profiles and the photo<\/li>\n<li>Call, Email, WhatsApp and Directions buttons<\/li>\n<li>Social profile links and up to three buttons of your own (for example\n\"Book a meeting\")<\/li>\n<li>Share, through the phone's share sheet or by copying the link<\/li>\n<li>Several languages per card, with a switcher; a scanned card can open in the\nvisitor's browser language<\/li>\n<li>Light, dark or automatic colour scheme, your accent colour, round or\nsquare photo<\/li>\n<\/ul>\n\n<h4>For whoever manages the cards<\/h4>\n\n<ul>\n<li><strong>A company profile<\/strong> \u2014 address, website, social links and a default intro\nare entered once; each card inherits them and can override any of them<\/li>\n<li><strong>QR codes for print<\/strong> \u2014 SVG and PNG, your colours, optionally your logo in\nthe middle (with the highest error correction), a ZIP of every code and a\nprintable test sheet<\/li>\n<li><strong>Statistics<\/strong> \u2014 views (from printed codes and from links, separately),\nsaved contacts, calls, emails and other taps, per card and per day, with a\nCSV export<\/li>\n<li><strong>When someone leaves<\/strong> \u2014 their printed codes keep working: the address\nshows a notice with the company's details or redirects to a successor. The\nperson's data disappears at once.<\/li>\n<li><strong>CSV import and export<\/strong> \u2014 add or update the whole team from a\nspreadsheet, with a preview before anything is written<\/li>\n<li><strong>Embedding<\/strong> \u2014 a shortcode, a block and a Bricks Builder element<\/li>\n<\/ul>\n\n<h4>How it is built<\/h4>\n\n<ul>\n<li>No dependencies and no build step. No jQuery.<\/li>\n<li>The card page is the plugin's own lightweight document, independent of the\ntheme, so a scanned code opens quickly on any phone.<\/li>\n<li>Card pages are <code>noindex<\/code> and kept out of sitemaps; there is no public\ndirectory of your staff.<\/li>\n<li>Page caches (LiteSpeed, WP Rocket, W3 Total Cache, WP Super Cache) are\npurged when a card changes.<\/li>\n<li>Translated into Polish and German.<\/li>\n<\/ul>\n\n<h3>Privacy<\/h3>\n\n<p>Statistics use no cookies and store no personal data: they are daily counters\nper card and event. Hits are sent with <code>navigator.sendBeacon()<\/code> to this\nsite's REST API. To cap abuse, the plugin keeps a salted hash of the visitor's\nIP address in a transient for one minute; the address itself is never stored.<\/p>\n\n<p>Behind a proxy or CDN every visitor arrives from the proxy's address, so all\nshare one rate limit. A site that trusts its proxy can pass the real client\naddress with the <code>tbcards_client_ip<\/code> filter.<\/p>\n\n<p>Card pages contain the personal data you enter for your staff (name, photo,\nphone, email). Enter only what each person has agreed to publish.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin does not connect to any external service.<\/p>\n\n<p>The \"Directions\" button is an ordinary link to Google Maps (or to a map link\nyou set yourself), opened only when a visitor taps it. The \"WhatsApp\" button\nis an ordinary link to wa.me. No data is sent to either before a visitor\nchooses to follow the link.<\/p>\n\n<h3>Third-party code<\/h3>\n\n<ul>\n<li><strong>qrcode-generator<\/strong> (PHP port) by Kazuhiko Arase, MIT licence \u2014\nhttps:\/\/github.com\/kazuhikoarase\/qrcode-generator \u2014 bundled in <code>lib\/qrcode\/<\/code>,\nmoved into the plugin's namespace; see <code>lib\/qrcode\/README.md<\/code> for the exact\nchanges and the source it was taken from. The word \"QR Code\" is a registered\ntrademark of DENSO WAVE INCORPORATED.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Team Cards \u2192 Settings: set your languages and the address base.<\/li>\n<li>Team Cards \u2192 Company profile: add the company details every card shares.<\/li>\n<li>Team Cards \u2192 Add card, or import your team from a CSV file.<\/li>\n<li>Open the card's QR code box to download the code for print.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20happens%20to%20printed%20qr%20codes%20when%20someone%20leaves%3F\"><h3>What happens to printed QR codes when someone leaves?<\/h3><\/dt>\n<dd><p>They keep working. Mark the card as \"no longer works here\" and choose what the\naddress does: show a notice with the company's details, redirect to a\nsuccessor's card, or redirect to a page on your site. Do not delete the card,\nand do not change its address: that is what the printed code holds.<\/p><\/dd>\n<dt id=\"can%20i%20change%20the%20address%20of%20the%20cards%20later%3F\"><h3>Can I change the address of the cards later?<\/h3><\/dt>\n<dd><p>You can, but every code already printed points to the old address. The\nplugin warns you when you change it.<\/p><\/dd>\n<dt id=\"will%20the%20qr%20code%20with%20a%20logo%20scan%3F\"><h3>Will the QR code with a logo scan?<\/h3><\/dt>\n<dd><p>With the logo on, codes use the highest error correction and the logo covers at\nmost a fifth of the code. Always print one proof and scan it from paper with\ntwo different phones before printing the whole batch.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20polylang%20or%20wpml%3F\"><h3>Does it work with Polylang or WPML?<\/h3><\/dt>\n<dd><p>It does not need them: languages are set in the plugin. Embedded cards follow\nthe page language of Polylang or WPML when present.<\/p><\/dd>\n<dt id=\"who%20can%20import%2C%20export%2C%20print%20codes%20and%20see%20statistics%3F\"><h3>Who can import, export, print codes and see statistics?<\/h3><\/dt>\n<dd><p>Users who can edit other people's posts (Editors and Administrators). Change it\nwith the <code>tbcards_manage_capability<\/code> filter; settings use\n    tbcards_settings_capability (default: <code>manage_options<\/code>).<\/p><\/dd>\n<dt id=\"how%20do%20i%20put%20a%20card%20on%20a%20page%3F\"><h3>How do I put a card on a page?<\/h3><\/dt>\n<dd><p>Use the \"Team Card\" block, the Bricks element, or the shortcode\n    [vizito_card id=\"12\"] (or <code>slug=\"jan-kowalski\"<\/code>), with optional <code>lang=\"de\"<\/code>\nand <code>inactive=\"hide\"<\/code> or <code>inactive=\"notice\"<\/code>.<\/p><\/dd>\n<dt id=\"do%20i%20need%20bricks%20builder%3F\"><h3>Do I need Bricks Builder?<\/h3><\/dt>\n<dd><p>No. The Bricks element is offered only when Bricks is active; the shortcode\nand the block work everywhere.<\/p><\/dd>\n<dt id=\"are%20the%20statistics%20exact%3F\"><h3>Are the statistics exact?<\/h3><\/dt>\n<dd><p>They are indicative. Bots and link previews are filtered out and repeated\nhits are capped, but no cookies are used, so one person on two devices counts\ntwice.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Card and QR test sheet styles are loaded through the WordPress style API.<\/li>\n<li>All handles, admin page slugs and the shortcode use the plugin's own prefix; the shortcode is now [vizito_card].<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Plugin Check clean-up: the bundled QR library throws a catchable exception instead of stopping the request on invalid input, the CSV reader no longer uses temporary streams, shorter readme summary.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Card labels follow the card's language even when the site has no language pack for it: the plugin uses its own translations, or English when there is none.<\/li>\n<li>The import preview names the card a row updates.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Yoast SEO's \"Remove unregistered URL parameters\" no longer strips the language and the printed-code marker from card addresses.<\/li>\n<li>Downloads (contact file, QR codes, CSV) are no longer corrupted by stray output from other code.<\/li>\n<li>Clearer labels for the per-language intro fields of the company profile.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Team business cards on your own domain: print-ready QR codes, one-tap \"save contact\", several languages, privacy-friendly statistics.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/387755","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=387755"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/asymetria"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=387755"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=387755"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=387755"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=387755"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=387755"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=387755"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}