A published post does not appear on the site
Check, in this order:
- Status is Published, not Draft or Pending Review.
- Publish at is not in the future. Scheduled posts show a "Scheduled" badge in the admin list and return 404 until their time.
- At least one site is ticked under Visible on sites. A post with no site ticked is hidden from every site, feed and block, whatever the hint under the checkboxes says. The demo posts created at install time and posts created through
POST /api/blog/postshave no site assignment. - You are looking at the right site: the post is only shown on the sites ticked.
The View button on a post leads to a 404
View uses the first site the post is assigned to, or the first site in the installation when it has none. Assign the post to a site and the link will work.
Scheduled posts go live at the wrong time
The comparison uses the database server's clock (NOW()), while the form value is interpreted in PHP's timezone (date.timezone in php.ini). Make sure both PHP and MySQL/MariaDB use the same timezone.
Comments submitted from the site never reach the Comments page
- Enable comments must be on in Admin > Blog > Settings; when it is off the form is not shown at all.
- Only published posts accept comments.
- The bundled
show.phtmlprints its own HTML form and does not render theBlog\Form\CommentFormobject passed in$commentForm, so thecomment_csrffield required by the form's validation is never submitted and the comment is discarded silently. If you use the stock template or copy it into your theme, render$commentForm(including$this->formHidden($commentForm->get('comment_csrf'))) so the token is posted. Submissions throughPOST /api/blog/posts/{id}/commentsorPOST /api/blog_commentsare not affected.
Approved comments are not shown under the post
The controller passes approved comments to the template as $comments, but the bundled show.phtml reads $post['comments'], which is never set, so the section always says "No comments yet." A theme override of view/omeka/site/blog/show.phtml that loops over $comments fixes this. See Displaying the Blog for the template variables.
No notification emails arrive
- At least one user must be selected under Moderation notification recipients, and the user must be active.
- Omeka S must have a working mail transport in
config/local.config.php. - Emails are sent by background jobs. Open Admin > Jobs, find the
Blog\Job\SendNotificationEmailjob and read its log; a "starting" job that never finishes means the job runner (PHP CLI path inconfig/local.config.php) is misconfigured.
The Moderation notification recipients list is empty
You are probably on the Configure form reached from Admin > Modules. That copy of the form does not load users and does not save recipients. Use Admin > Blog > Settings instead. If the list is empty there too, no active user has the Editor, Site Administrator or Global Administrator role.
An author cannot publish
This is by design. Authors' posts are saved as Pending Review and the moderation recipients are emailed. An Editor, Site Administrator or Global Administrator must set the status to Published. See Editorial Workflow.
"Please select a category" when saving
Every post needs a category. Create one under Admin > Blog > Categories first, then pick it in the Post Settings panel. Posts left uncategorised after their category was deleted need a new category on their next save.
The post URL returns 404 although the post is published and assigned
Slugs must contain only lowercase letters, digits and hyphens; the public route does not match anything else. Edit the post and clear the Slug field to regenerate it, or type a slug that follows that rule.
The RSS feed returns 404
Feeds are off. Tick Enable RSS / Atom feeds in Admin > Blog > Settings. The feed URL is /s/{site-slug}/blog/feed/rss; check the site slug.
The Primary color setting has no effect
The value is saved but the bundled templates do not use it. Override the --blog-accent CSS variable in your theme stylesheet instead. See Displaying the Blog.
The API does not return my draft or scheduled post
Unauthenticated requests, and API keys belonging to Researcher or Author accounts, only see what the public site shows: published posts whose publish time has passed, and approved comments without the commenter's email. Any status filter they send is ignored, and GET /api/blog_posts/{id} answers 404 for a draft, pending or scheduled post. To read unpublished content, authenticate with an API key from an Editor, Site Administrator or Global Administrator account and pass status=draft or status=pending. The legacy GET /api/blog/posts endpoint only ever returns published posts. See REST API.
CKEditor does not load on the post form
Reload the page with the browser cache bypassed and check the browser console for JavaScript errors. Another module that replaces Omeka's CKEditor configuration wholesale can break the editor; the Blog module only extends the configuration through the o:ckeditor-config event.
Author name shows as a number
The user account that created the post was deleted, so the template falls back to #{author_id}. Posts keep their author_id; there is no way to reassign the author from the admin form, but it can be changed in the blog_post table.