WordPress integration

Generate PDFs from WordPress

Connect Quaterio to your WordPress REST API, pull posts, pages or WooCommerce data into block-based templates and render paginated PDFs on demand or in batch.

The problem

WordPress is great for managing content. It is not great for PDF output. Built-in print stylesheets break across pages, plugins force the same template on every post, and HTML-to-PDF libraries fight your theme's CSS. Maintaining a separate PDF layout next to your WordPress content turns into ongoing tax.

How Quaterio handles it

Quaterio's WordPress connector reads your wp-json REST API and drops the rendered post HTML into a block-based template. Public posts need no auth. Application Passwords cover private content. ACF and custom meta navigate through dot-notation paths. Your editorial team keeps writing in WordPress; you keep getting clean, paginated PDFs.

How it works

  1. 1

    Pick the WordPress preset in Connections

    Settings → Connections → New Connection → pick "WordPress" from the type dropdown. The URL, auth and response field defaults are filled in for you. Replace yoursite.com with your own host.

  2. 2

    Hit Detect Fields to confirm the shape

    Quaterio fetches the endpoint with your credentials and shows you the actual JSON paths available, including ACF and custom meta. Pick the field you want to render (default is 0.content.rendered for the latest post body).

  3. 3

    Add a Remote Content block to a template

    Open a template in the editor, add a Remote Content block, bind it to the WordPress connection and pick the field. The preview pulls real content so you can style around it.

  4. 4

    Generate the PDF via the editor or API

    Export from the editor for one-offs. For batch jobs or scheduled exports, hit POST /api/v1/generate/template with the template ID. The connector re-fetches at generation time so every PDF has fresh content.

What the connector handles

  • Public posts and pages over the standard WP REST API, no auth needed
  • Private content via Application Passwords using Custom Header Basic auth
  • Gutenberg block HTML lands directly in your template through content.rendered
  • ACF and registered meta fields accessible by dot-notation path
  • WooCommerce REST (/wp-json/wc/v3/) supported with consumer-key auth
  • Detect Fields button auto-discovers the available paths from your data
  • Multi-site: one Quaterio connection per subsite
  • Inline image URLs resolved at PDF render time
  • Refresh on demand from the editor, or via API before batch generation
  • 15 second fetch timeout, cached on the block when WP is slow or unreachable

Generate via API

# 1. Create the connection via the dashboard (one-time setup). # 2. Bind a template's Remote Content block to it. # 3. Generate a PDF that pulls live WordPress content: curl -X POST https://quaterio.com/api/v1/generate/template \ -H "Authorization: Bearer q_your_token" \ -H "Content-Type: application/json" \ -d '{ "templateId": "wp_article_export" }' # → { # "ok": true, # "data": { "downloadUrl": ".../wp-article_en_a7f3b2c1.pdf" } # } # The connector hits your wp-json/wp/v2/posts at generation time # and renders the latest post into the bound template block.

Available on Business plan and above.

WordPress and PDF: the real questions

The WordPress preset uses the standard WP REST API (wp-json/wp/v2/...). That makes it work with vanilla WordPress, WordPress.com Business and most managed hosts. The sections below cover the questions teams actually ask when wiring this up.

Public versus private content

Published posts and pages need no auth. The default WordPress preset has Auth set to None for exactly this reason. Hit /wp-json/wp/v2/posts and you get a JSON array of public content. That covers most blog and marketing teams who want PDF archives of their published articles.

Private posts, drafts, custom-post-type entries with restricted visibility and password-protected pages all require authentication. The WordPress way is Application Passwords, generated under Users → Profile. Once you have one, switch the connection Auth type to Custom Header, set the header name to Authorization and the value to "Basic " followed by base64(username:applicationPassword). The fetcher sends that on every request and the WP REST API treats you as the authenticated user.

Gutenberg blocks and the rendered HTML

The default response field on the WordPress preset is 0.content.rendered, which returns the post HTML after WordPress has run Gutenberg block rendering, shortcodes, and oEmbed expansion. That HTML drops straight into a Quaterio remote-content block.

A few caveats: classic editor posts return inline HTML directly. Most Gutenberg blocks render to standard HTML (paragraphs, headings, lists, images, tables). Reusable blocks and synced patterns also render through. Custom blocks that rely on heavy JavaScript at view time will only render their server-side HTML, which is usually fine for static export but means dynamic widgets, sliders or interactive maps will not animate inside the PDF.

Featured images and inline media

Featured images live at the /wp-json/wp/v2/media endpoint and are referenced from posts by ID. To embed the featured image in your PDF, set up a second connection pointing at the media endpoint, or use the WordPress preset URL parameter _embed=true to inline embedded resources. Quaterio will resolve image src URLs as part of the rendered HTML.

Inline images in content render at their original WordPress URLs. Quaterio fetches them during PDF generation, so your WordPress site needs to be reachable from our PDF rendering service. CDN-hosted images (Jetpack, Cloudflare, BunnyCDN) work without extra config.

ACF and custom fields

Advanced Custom Fields and WordPress core meta both expose data through the REST API once you opt in. ACF respects show_in_rest on each field group; core meta needs register_post_meta with show_in_rest set to true.

Once exposed, navigate to the value with the dot-notation Response Field path. For ACF: 0.acf.your_field_name. For core meta: 0.meta.your_meta_key. Use the Detect Fields button in the connection setup to see exactly which paths your installation returns. The path-picker handles nested objects and arrays out of the box.

Multi-site and multiple connections

WordPress Multisite exposes each subsite at its own /wp-json/ root. Create one Quaterio connection per subsite. Templates can bind to any connection, so a brand-wide template can pull from a different subsite per language or region.

For agencies running many client sites, the same pattern applies: one connection per client site, named for the client. Business and Enterprise both have unlimited connections, so adding a new client site does not push you toward a higher tier. Connections are not limited by content type, so one connection covers posts, pages and custom types from the same site.

WooCommerce products and orders

WooCommerce exposes its own REST API at /wp-json/wc/v3/. Pulling product catalogs into a PDF brochure works exactly like the standard WordPress flow: set the endpoint URL to /wp-json/wc/v3/products and authenticate with a WooCommerce consumer key and secret (custom_header authentication with Authorization: Basic base64(consumerKey:consumerSecret)).

Order data needs authenticated access by design. Same Basic auth pattern. The Detect Fields button finds the right paths: products.0.name, products.0.price, products.0.description and so on. Pair with the proposal or invoice templates from the template gallery for the fastest catalog or quote build.

Performance and freshness

Each remote-content block fetch has a 15 second timeout. If your WordPress is slow under load (busy database, heavy plugins, slow PHP), increase your hosting capacity rather than fighting the timeout. We do not retry inside the timeout window because PDF generation is interactive.

Fetched content is cached on the block. The editor shows a Refresh button to pull again on demand, and the cached value is what renders if your WP site is unreachable at PDF generation time. For production batch jobs, refresh blocks server-side via the API before kicking off the batch.

Pricing and plan tier

CMS connections are part of the Business plan and above ($30/mo). Pro plans get the editor and basic templates but not the remote-content block or the connection UI. Free and Pro users who try to add a remote-content block see an upgrade prompt.

There is no per-API-call charge from Quaterio. You pay for the PDFs you generate (counted against your tier limit) and for the editor time. The connector fetches happen during preview and PDF generation and do not count separately.

Try the WordPress connector free

Set up the connection in two minutes. No credit card required to start.