# How to display stories by a given author, accounting for name changes

Source: https://dev.arcxp.com/author-service/developer-docs/how-to-display-stories-by-a-given-author-accounting-for-name-changes/

Authors can change their name for many reasons. When setting up features and templates in PageBuilder that render author data or stories written by an author, this possibility of name change should be taken into account. There are certain fields you will want to update with the name change, and others that need to stay static so that content queries return stories before and after a name change.

In the Author API, there are two fields that are relevant here: `_id` and `slug`. The difference is that `_id` is fixed (it cannot be changed), but `slug` is not fixed (it can be regenerated). So if an author changes their name, the `slug` can be changed to reflect that, while the `_id` remains the same.

For that reason, some orgs prefer to expose `slug` in URLs, so that the author’s bio page URL can change if their name changes. But `_id` is safer for querying the Content API, because if a query was built using `slug`, and the `slug` changes, then the query won’t find content anymore - while if the `_id` is used for querying, content will be found before _and_ after an author changes their name.

## Example Author

Let’s say we have an author named Taylor Doe. Here’s their Author Service entry:

![Author Entry](https://dev.arcxp.com/_astro/author-entry.OXhkAWsa_Zu9aLT.webp)

![Social Accounts & Contact Info](https://dev.arcxp.com/_astro/author-entry2.DSpcgbBc_Z2f9900.webp)

```json
{
  "_id": "taylordoe",
  "firstName": "Taylor",
  "lastName": "Doe",
  "byline": "Taylor Doe",
  "slug": "taylor-doe"
}
```

If Taylor changes their name to Taylor Doe Smith, then any relevant field (including `slug`) can be manually updated in the Author Service app to include this. However, `_id` will _not_ change.

![Author Service app example](https://dev.arcxp.com/_astro/author-entry3.d--amGkL_1JwCMW.webp)

![Author Service app example](https://dev.arcxp.com/_astro/author-entry4.DMQ_i8f7_4XUcx.webp)

```json
{
  "_id": "taylordoe",
  "firstName": "Taylor",
  "lastName": "Doe Smith",
  "byline": "Taylor Doe Smith",
  "slug": "taylor-doe-smith"
}
```

## How to create a query for an author’s stories

If you want to set up a static query for a single author (for instance, you want to feature specifically Taylor’s columns on the homepage), then you should query the Content API by the Author’s `_id`

This way, the query will still return stories before and after Taylor changes their name.

Following [Content API Documentation](https://docs.arcxp.com/en/products/publishing-platform/how-to-write-content-api-queries--example-queries.html), you could find the 10 most recent stories by Taylor by using this query:

```
https://api.[ORG].arcpublishing.com/content/v4/search/published?website=[WEBSITE]&q=type:story+AND+credits.by._id:taylordoe&sort=display_date:desc&size=10
```

If you had instead queried for:

```
type:story+AND+credits.by.slug:taylor-doe
```

Then when Taylor changes their name to Taylor Doe Smith, your query would no longer find their stories (because the slug is now **taylor-doe-smith**), so the feature would appear empty (no stories will be displayed).

## How to set up a resolver + template for Author Bio pages

If you want your Author Bio pages to include the author’s slug in their URL (that is, you want author bio pages to have a human-readable URL like `www.Example.Com/Authors/Jane-Doe/`) instead of using an `_id` like `www.example.com/Authors/Taylordoe/`, then you should utilize the `slug` field to get information about the author from the Author API.

If you wish to utilize `slug` in the URL pattern for these pages, you should do the following:

1. Ensure that Slug is enabled as an editable field in your Author Service app (it is disabled by default). If you do not see a Slug field in your Author Service, you can request this through [Arc Support](https://arcpublishing.atlassian.net/servicedesk/customer/portal/2).
2. When readers click the byline of your authors (e.g. on an article page, to see more stories written by them), ensure that the URL is created by using the slug - e.g. `/authors/{slug}/` \- note that `authors` can be any string you want (e.g. `people` or `staff`), as long as you’re consistent and set up the same pattern in the resolver.
3. In PageBuilder, you should have a Content Source to [Look Up Authors In The Author API By Slug](https://dev.arcxp.com/api/content-administration/author-api/), e.g.:

```
  https://api.[ORG].arcpublishing.com/author/v2/author-service/?slug=taylor-doe-smith
```

1. The resolver you set in PageBuilder for the Author Bio template should:  
a. Capture the slug from the incoming URL  
b. Use the Author API by Slug Content Source, and send that slug to it  
![Author Entry](https://dev.arcxp.com/_astro/author-entry5.yiTwpsrA_gea4X.webp)
2. Because of how this resolver is configured, the global content of your Author Bio template is the Author API response:  
![webpage with example content](https://dev.arcxp.com/_astro/pb-1.BNoDeiCa_2ldI9z.webp)  
a. The Author Bio feature can inherit directly from that global content (since it contains all of the Author Service data you need to display about that author):  
![webpage with example content](https://dev.arcxp.com/_astro/pb-2.DmEInydY_LXPgi.webp)  
b. While the feed feature can utilize the global content’s `_id` value to query the Content API by the author’s ID, using curly braces syntax, i.e. `{{content._id}}`:  
![webpage with example content](https://dev.arcxp.com/_astro/pb-3.4PIL15wW_Z2oXhrj.webp)  
Now, if Taylor changes their name to Taylor Doe Smith, their `slug` can be updated to **taylor-doe-smith** (and because of the nature of author references on stories, this will update on every story Taylor has published in the past). When users click on their name, they’ll be directed to `/author/taylor-doe-smith/` and the resolver will capture **taylor-doe-smith** and request for that slug’s data from the Author API.
