# How to set page slug in code

**URL:** <https://talk.jekyllrb.com/t/how-to-set-page-slug-in-code/2425>\
**Category:** Help\
**Created:** [December 19, 2018, 6:31pm UTC](https://talk.jekyllrb.com/t/how-to-set-page-slug-in-code/2425 "2018-12-19T18:31:03Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![marian42](https://avatars.discourse-cdn.com/v4/letter/m/b2d939/32.png) [@marian42](https://talk.jekyllrb.com/u/marian42)\
**Post date:** [December 19, 2018, 6:31pm UTC](https://talk.jekyllrb.com/t/how-to-set-page-slug-in-code/2425/1 "2018-12-19T18:31:03Z")

</div>

I’m trying to set the page slug in code. This is what I tried:

```
Jekyll::Hooks.register :articles, :pre_render do |post|
  post.slug = "test-slug"
end

```

It fails with `undefined method slug= for Jekyll::Document`. How can this be done?

---

<div class="post-metadata">

**Author:** ![marian42](https://avatars.discourse-cdn.com/v4/letter/m/b2d939/32.png) [@marian42](https://talk.jekyllrb.com/u/marian42)\
**Post date:** [December 19, 2018, 7:01pm UTC](https://talk.jekyllrb.com/t/how-to-set-page-slug-in-code/2425/2 "2018-12-19T19:01:32Z")

</div>

I figured it out, the solution is:

```
Jekyll::Hooks.register :articles, :pre_render do |post|
  post.data["slug"] = "test-slug"
end
```
