Plugin Directory

Test out the new Plugin Directory and let us know what you think.
!This plugin hasn’t been updated in over 2 years. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.


Insert cross-references between posts and pages easily and get a list of backward references on each post and page automatically.

With this plugin you can manually set a reference to another post or page in posts und pages and you get all backward references automatically listed for every post and page.

Note May 1st, 2009: The development of this plugin is being discontinued, because I personally do not use WordPress any more. There will be no new release of it from me. It is now still compatible with the latest WordPress version, but soon or later it will be no more. You are welcome to download the source code from the Subversion repository and develop it further.

Usage Basics

Just place [cref post] at your post or page content to get both a forward and a backward link between these. The plugin shows automatically a list of related entries at the end of each post and page.

To start using the plugin is easy: With the import tool you can convert all your internal html links <a href="...">...</a> to cross-references. The plugin is safe: You can change the post slugs at any time, the plugin will change all references for you. And if you once do not want to use the plugin any more, you can completely deinstall it leaving your blog with simple html links again.

Usage Details

When writing a post or page, you can refer to other posts or pages by their slug or numerical ID. At the Settings/Cross-References page on your admin panel you can switch between referencing by ID and by slug (even if you already set references, these will be automatically updated).

  • [cref post] sets a reference from the current post to post. Example: "As I said on my first post [cref hello-world], I won't write about my job." The current entry is shown at the blog as "As I said on my first post Hello World!, I won't write about my job.", with a html link from "Hello World!" to the "Hello World!" post. At the "Hello World!" post the current post appears under "Related Posts".

  • [cref post alternate text] same as [cref post] but the link has another text instead of the post title. Example: "As I said on my [cref hello-world first post], I won't write about my job." This is shown as "As I said on my first post, I won't write about my job.", with a html link from "first post" to the "Hello World!" post.

  • [cref.from post] sets a backward reference from post to the current post. Example: "[cref.from my-vision]" A forward reference is not shown at all, and both the current and the post post appear at each others related posts list.

Related Posts List

You get automatically a list of all the posts and pages that link to the current post or page at the end of each entry.

For a greater control on the appearence and position of this list you can optionally customize your templates:

  • Go to the Settings/Cross-References page on your admin panel and set up "Do not show related posts list"
  • At your template files place <?php the_crossreferences() ?> wherever you want to place the related posts list.

Parameters: the_crossreferences( $before, $between, $after, $id, $emptylist )

It shows the related posts list for post $id, or for the current post if $id is not given or is 0.

  • If there are some related posts: It shows $before, then all post titles with $between in between, then $after.
  • If there are no related posts: It shows $emptylist.

You can apply CSS styles to the related posts list, because it is enclosed within a DIV (class="crossreferences").

For theme/plugin developers: You can also control the sort order and the appearence of the related posts list with filters.

For more information and examples about function parameters, styles and filters see the page "Other Notes".


This plugin adds a page at the admin panel under Settings / Cross-References where you can set the plugin options and run some tools:

  • Import all html links <a href="...">...</a> that refer to other posts or pages in your blog converting them to [cref...] references.
  • Switch between [cref post-slug] and [cref post-ID]. You can switch at any time: if your blog has already some references set, they will be updated.
  • Configure the "related posts" lists, or hide it if you call the_crossreferences() in your templates.
  • Rename a page slug (you can rename a post slug directly within the admin panel / manage posts, but this does not work for pages because of WordPress internals).
  • Set how to show references when exporting your blog to XML. You can let them unchanged as [cref...] or show the post title, optionally with a html link to the referred blog post.
  • Rebuild the plugin table, if the plugin was some time inactive, in order to fix possible errors at the related posts lists.
  • Deinstall completely the plugin, deleting the plugin's table and options from your database. All existing [cref ...] references are optionally replaced with post titles, with or without html links - this ensures your blog remains readable if you decide to remove this plugin.


This plugin works for any blog language, because you can customize its wording, and it works fine with multilanguage plugins such as qTranslate. Please let me know if you have any localization issues.

The plugin settings page is right now in this languages:

  • English,
  • German,
  • Italian (translated by Leonardo Saracini),
  • Catalan, and
  • Belorussian (translated by FatCow).

Requires: 2.5 or higher
Compatible up to: 2.7.1
Last Updated: 8 years ago
Active Installs: 100+


0 out of 5 stars


Got something to say? Need help?


Not enough data

0 people say it works.
0 people say it's broken.