MetaObject Blog Post Reference?

Topic summary

Users have discovered that Blog Posts cannot be referenced as a field type when creating MetaObjects in Shopify, which is blocking several use cases.

Primary Impact:

  • Cannot create ā€œRelated Articlesā€ features on products or other content types
  • Prevents proper CMS migrations that rely on blog post relationships
  • Forces workarounds using Link fields, which don’t prevent broken links if posts are deleted

Community Workarounds:

Option 1 (growth-croiss): Store article IDs in a metafield, then loop through blog articles to match IDs in Liquid code

Option 2 (scottn): Use article handles instead of IDs to avoid nested loops, leveraging Liquid’s articles object with where filters

Option 3 (shiba-komino & sadDev): Create a custom MetaObject Definition called ā€œBlog Post Referenceā€ with fields for blog post ID, title, and URL. Manually populate entries for each blog post, then reference this MetaObject from other content types. This allows searching/selecting posts without copy-pasting URLs, but requires manual entry creation for each blog post.

Consensus: Multiple users are requesting Shopify add native blog post references to MetaObjects, calling it ā€œreally importantā€ functionality.

Summarized with AI on November 10. AI used: claude-sonnet-4-5-20250929.

When creating a MetaObject field, Blog Posts are not one of the types you can reference. Am I missing something or is this intentionally not included?

I know I can use the Link type but I prefer to allow the user to select his blog post to avoid broken links in the future. Thanks!

4 Likes

Yes, same issue there… difficult to understand why !

Oooof!

I’m trying to map out our CMS migration to Shopify and this missing piece has me pretty stuck. I did not notice blog references were not a thing… This seems really important. Please add this. We were intending to add ā€œRelated Articlesā€ on products, blog articles, and pages. I was also hoping to implement blog article categorization using metaobjects, but none of this is very doable without the blog reference. Someone please tell me I’m just missing something, or the feature is rolling out tomorrow or something.

2 Likes

I’m having the same problem. Please Shopify, add this feature! It’s really important.

1 Like

Waiting for a solution, I’m using that with a metafield of article ID # :

{%- for id in product.metafields.custom.blog_posts.value limit: section.settings.posts_count -%}
  {% for article in blogs.journal.articles %}
      {% if article.id == id %}
        {%- render 'blog-post-card', article: article, blog: section.settings.blog, show_category: section.settings.show_category, show_accroche: section.settings.show_accroche, show_excerpt: section.settings.show_excerpt, show_read_more: section.settings.show_read_more, sizes: sizes -%}
      {% endif %}
  {% endfor %}
{% endfor %}
1 Like

Hey @growth-croiss , I like your solution. I think if you stored article handles instead of ids you could probably avoid that inner for loop and use the articles liquid object like so:

{% assign article = articles['potion-notions/new-potions-for-spring'] %}

Otherwise you might be able to use the where filter to get at your article by id:

{% assign article = articles | where 'id', id | first %}

my solution is create a new MetaObject Definition as ā€œBlog Post referenceā€,
then add ā€œBlog Post Referenceā€ as Blog post’s metafield.

after that, we can create a new ā€œblog post referenceā€ in blog post’s metafield.
and use this type of ā€œBlog Post Referenceā€ as field in another MetaObject.

Would you mind sharing the work around? This sounds like a possible solution, at least until Shopify realizes they’ve missed the articles metafield. Thanks!

I don’t know if this will be helpful, but here’s my work around:

  1. create a meta object called: ā€œblog post referenceā€

  2. Add 3 fields - blog post id, blog post title, blog post url

  3. Go through your blogs and make a few entries in the ā€œblog post referenceā€ metaobject definition

  4. Go to setting → custom data-> blog posts and create a metafield on that object type with the following specs:
    a) field type of meta object
    b) select ā€œlistā€ for multiple selections
    c) select the ā€œblog post referenceā€ metaobject definition we created above.

*note- you can name the field anything you like - i’m just going to refer to it as ā€œrelated readingā€
Once you’ve completed those selections- save the field and pin the definition.

Then- navigate back to your blog posts and open one. If you scroll to the metafields on the blog posts and select the ā€œrelated readingā€ field. You will notice that the field has references to all of the references you created in the first step where we established the metaobject "blog post reference " and added many or all of our blog post entries. You can now search for titles and add references to multiple blog posts without having to copy and paste urls for each one.

It would be ideal if we could automate the creation and destruction of these entries, but the options out there are very limited :disappointed_face: