Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/dillonma/scholar-citation-meta/archive/refs/heads/main.zipGoogle Scholar and Zotero citation tags for a page about a single paper, chapter or book, generated from a DOI (Crossref, DataCite, doi.org) or BibTeX, with Scholar-friendly PDF links.
What it does
Scholar Citation Meta is for a page about a single work. Give a post a DOI, and the plugin adds the citation tags Google Scholar and Zotero need to recognize the page as that paper, chapter or book. It also gives the PDF a link Google Scholar will accept.
For pages that list many works, such as a publications page, use the companion plugin Scholar Citation Meta Scanner. It works on its own or together with this one.
| Scholar Citation Meta | Scholar Citation Meta Scanner | |
|---|---|---|
| Use it for | A page about one work: a paper, chapter or book | A page that lists many works: a publications list, syllabus, reading list or bibliography |
| What it adds | Highwire citation_* meta tags for that one work |
Hidden COinS tags for every DOI found on the page |
| Google Scholar | Tells Scholar the page is that work and where your PDF is | Not used by Scholar |
| Zotero browser button | Saves the one work | Shows a folder icon with a pick-list of every work on the page |
| Where the details come from | The DOI you enter (Crossref, DataCite, doi.org), plus optional BibTeX | Each DOI on the page, looked up the same way |
| Turned on | Per post, by entering a DOI | Per post or page, with a checkbox (off by default) |
Examples
- One paper (Meta): The urban-tech feedback loop, a journal article in Digital Geography & Society. Google Scholar has what it needs to index the page as that article, and Zotero saves it as a journal article.
- One book chapter (Meta): Land for AI, a chapter in The Inner World of Artificial Intelligence (CRC Press). Zotero saves it as a book section with the book title and publisher.
- A list of works (Scanner): Papers + Writings, a full publications list. Zotero offers every listed work with a DOI as a pick-list.
- Both together: Doing Critical GIS, a special-issue introduction with the issue's other articles listed below it. Meta describes the introduction itself for Google Scholar. The Scanner gives Zotero a pick-list with the introduction first, followed by the other articles.
Using both
The two plugins are built to run side by side. On a page with both:
- Google Scholar still reads Meta's tags, so the page is still described as its own work.
- Zotero prefers the Scanner's list, and the page's own work is put first in it (you can turn this off per page).
- If a DOI on a list page belongs to one of your own Meta posts, the Scanner uses that post's details, including any BibTeX fixes such as missing page numbers.
Features
For each paper post, enter a DOI (and optionally a PDF URL or BibTeX). The plugin then:
- Fetches title, authors, date, journal, volume, issue, pages, ISSN, publisher and DOI when you save the post. It tries Crossref first, then DataCite's API, then
doi.orgfor any other registration agency. The box shows which one supplied the data and flags missing fields. - Outputs Highwire
citation_*meta tags in the page<head>. Google Scholar and the Zotero Connector both read these. - Gives each PDF an alias under the post's URL and uses the alias in
citation_pdf_url, because Google Scholar wants the PDF in the same folder as the abstract page:/articles/file.pdf→/papers/<slug>/file.pdf/wp-content/uploads/YYYY/MM/file.pdf→/papers/<slug>/YYYY/MM/file.pdfThe alias rules are added to WordPress's own.htaccessblock. PDFs in subfolders of/articles/are used as-is, without an alias.
- Serves BibTeX and RIS downloads at
?scm_cite=bibtex/?scm_cite=ris. Put[scholar_cite]in a post to show the links to readers.
Install
- Download
scholar-citation-meta-<version>.zipfrom the latest release. Download the release asset, not GitHub's "Source code" archive. - In WordPress, go to Plugins → Add New → Upload Plugin, choose the zip, and activate. If an older copy is installed, choose Replace current with uploaded.
- Go to Settings → Permalinks and click Save. This writes the PDF alias rules to
.htaccess. - Edit a paper post. In the Scholar citation metadata box, enter the DOI and the PDF's URL, then click Update.
- Reload the editor. The box shows the PDF link to use on the page (with a Copy button) and the exact tags that will be output.
Items without a DOI
Paste a BibTeX entry instead. Any field in the BibTeX overrides the Crossref value, which is useful for fixing a bad Crossref record. Supported entry types: article, incollection/inbook, inproceedings, book, techreport, thesis.
Settings (optional, in wp-config.php)
define( 'SCM_POST_TYPES', 'post' ); // comma-separated post types
define( 'SCM_PDF_PREFIX', 'papers' ); // first URL segment of paper posts
define( 'SCM_PDF_ALIAS', true ); // false = no alias rules
define( 'SCM_PDF_DIR', 'articles' ); // non-Media-Library PDF folder ('' = none)
Shortcodes
| Shortcode | Result |
|---|---|
[scholar_pdf] |
PDF icon + bold Download PDF link to the alias |
[scholar_pdf text="Read the PDF"] |
Same link with your own wording |
[scholar_pdf icon="0"] |
Link without the PDF icon |
[scholar_pdf class="button"] |
Adds your own CSS class (default scholar-pdf) |
[scholar_pdf url="1"] |
Just the bare URL |
[scholar_cite] |
"Cite: BibTeX · RIS" download links |
If the alias URL doesn't load
The plugin box shows whether the alias rule is in .htaccess.
- Rule found: Apache serves the PDF directly.
- Rule missing: WordPress serves the PDF itself (v1.3+), so the alias still works. To use the faster Apache rule, go to Settings → Permalinks and click Save. If WordPress says
.htaccessisn't writable, copy the rules it shows into the file. - Still a 404: check that the file name matches exactly. Linux servers are case-sensitive, so
.PDFis not the same as.pdf.
DOIs Crossref can't find (DataCite, e.g. ACME)
Some journals register their DOIs with DataCite, not Crossref. When Crossref has no record, the plugin asks DataCite's API directly, but DataCite records are often thin. ACME's DOIs, for example, have no page numbers and put "Vol. 21 No. 4 (2022): ..." in the page field. The plugin pulls the volume and issue out of that text. To fill in anything still missing, add a short BibTeX entry with just those fields, e.g.:
@article{x, pages = {327--336}, issn = {1492-9732}}
Use the same entry type as the item (@article for journal articles). Any fields you leave out still come from the DOI lookup.
To check which agency registered a DOI, open https://doi.org/ra/<DOI>.
Updates
Version 1.7.0 and later update from this repository's Releases. When a new release is published, WordPress shows it on the Plugins and Updates screens, and you update with one click (or let auto-updates handle it). WordPress checks GitHub at most every 6 hours.
Versions before 1.7.0 don't have the updater, so upload 1.7.0 once by hand.
Releasing a new version (maintainers)
- Bump the version in the plugin header (
Version:) and inreadme.txt(Stable tag:), and add a changelog entry toreadme.txt. - Commit and push, then create a release whose tag is
v<version>, e.g.gh release create v1.2.3 --generate-notes. - The Release workflow checks that the tag matches both version numbers, builds
scholar-citation-meta-<version>.zip, and attaches it to the release. Sites running the plugin will then see the update.
Changelog
- 1.7.1: Update checks fall back to github.com when GitHub's API is rate-limited (common on shared hosting).
- 1.7.0: Updates from GitHub Releases: new versions appear on the Plugins screen like any other plugin.
- 1.6.0: The DOI field accepts publisher URLs (e.g. Taylor & Francis chapter links), drops title slugs after the DOI, and stores the DOI that actually resolved.
- 1.5.0: Checks the DataCite API directly when Crossref has no record, before falling back to doi.org.
- 1.4.0: doi.org fallback; cleanup of page fields that are not page numbers; missing-field hints.
- 1.3.0: PHP fallback for PDF aliases; .htaccess status line; shortcode reference table.
- 1.2.0: Alias link with copy button; [scholar_pdf] shortcode.
- 1.1.0: Aliases for PDFs stored in /articles/.
- 1.0.0: First release.
License
GPL-2.0-or-later. See LICENSE.