=== Postify – Post Grid, Carousel, Timeline & Masonry Layouts ===
Contributors: faysal61, shshakib2001
Tags: post grid, post carousel, post slider, post timeline, post filter
Requires at least: 5.9
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 2.0.0
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html

Show your blog posts as a carousel, slider, grid, minimal list, timeline or masonry layout, with live filters, sorting and pagination.

== Description ==

Postify turns your posts into a polished, responsive layout you can place anywhere — no code and no page builder required.

Create a **layout** in the visual editor: pick one of six presets, choose which posts it shows, decide what each card displays, and style every part of it while the live preview updates. Postify gives you a shortcode, a block and an Elementor widget to place it with.

= Six layout presets =

*   **Carousel** — four styles: Standard, Ticker (continuous scroll), Center and Multi Row
*   **Slider** — one post at a time, with slide, fade, coverflow, cube and flip transitions
*   **Grid** — responsive columns at five screen widths
*   **Minimal List** — a compact list, with the image on the left or right
*   **Timeline** — vertical (five styles, with optional month separators) or horizontal (three styles)
*   **Masonry** — posts of different heights packed together without cropping

Every layout can use the **Custom** template, built from reorderable content fields, or one of the **pre-made templates** (three for the grid family, four for Minimal List).

= Choose exactly which posts appear =

*   Latest posts, sticky (featured) posts, or posts you pick by hand
*   Include or exclude specific posts, the current post and password-protected posts
*   Sticky posts in their normal place, pinned to the top, or hidden
*   Filter by category and tag (match any, all or none), keyword, publish timeframe, month, year, a specific date, year or period
*   Hide posts without a featured image
*   Order by date, modified date, title, slug, ID, comment count, menu order or random
*   Limit the number of posts

= Live filters, search and pagination =

*   Ajax live filters by category, tag, timeframe, month and year — as buttons, a dropdown, radio buttons or checkboxes, with post counts
*   Live keyword search, a reset button and a show/hide filter toggle
*   Pagination as Load More, Ajax page numbers, infinite scroll or classic page numbers, with a separate choice for mobile

= Every detail is adjustable =

*   Card border, radius, box shadow, padding, background and hover background
*   Thumbnail size and hard or soft crop, retina images, zoom and grayscale effects, lazy loading, and first-image/video/audio fallback
*   Title tag and length, meta fields (author with avatar, date or "time ago", categories or tags, comment count, reading time) with icons and separators
*   Excerpt, trimmed content or full content; Read More as a button or text link
*   Social share buttons for 13 networks
*   Custom fields from ACF, Pods, Toolset or plain post meta
*   Open posts on their page, in a new tab, in a popup (with next/previous), at a custom-field URL, or not at all
*   Typography for the section title, title, meta, content, Read More and custom fields — including Google Fonts and separate tablet and mobile sizes
*   Carousel controls: autoplay, speed, loop, direction, rows, slides to scroll, nine arrow positions, seven arrow styles, dots or numbers, touch, mouse drag, mouse wheel and keyboard navigation

= Built for real sites =

*   Global Color Scheme, Custom CSS and Custom JavaScript, and accessibility labels for the carousel
*   Export and import layouts and settings
*   SEO schema markup (an ItemList of BlogPosting) for each layout
*   Assets load only on pages that show a layout
*   Translation ready; every template can be overridden from your theme

== Installation ==

1. Upload the `postify` folder to `/wp-content/plugins/`, or install Postify from **Plugins → Add New**.
2. Activate the plugin.
3. Go to **Postify → Add New Layout**, choose a preset and save.
4. Paste the layout's shortcode — for example `[postify id="123"]` — into any post, page or widget, or add the **Postify** block or Elementor widget.

== Frequently Asked Questions ==

= I used Postify 1.x. Will my shortcodes keep working? =

Yes. Shortcodes you added with Postify 1.x, such as `[postify layout="carousel" theme="2"]`, keep working with every attribute they had, and nothing in your posts is changed. Postify 1.x stored no settings in the database, so there is nothing to migrate. Create a layout in the new editor whenever you want the new options.

= Which posts can Postify show? =

Standard WordPress posts, with their categories, tags, authors and dates.

= Can I use more than one layout on a page? =

Yes. Each layout keeps its own filters and pagination.

= Can I change the templates? =

Copy any file from `postify/src/Frontend/templates/` to `your-theme/postify/templates/`, keeping its folder structure, and edit the copy.

= What happens to my layouts if I delete the plugin? =

They are kept, so reinstalling brings them back. To remove everything instead, tick **Settings → Advanced → Delete All Data On Uninstall** before deleting the plugin.

= Why can't I save Custom JavaScript? =

Custom JavaScript runs for every visitor, so it can only be changed by users who are allowed to post unfiltered HTML — normally administrators.

== Screenshots ==

1. Carousel layout
2. Grid layout with live filters
3. Minimal List layout
4. Vertical timeline
5. Masonry layout
6. The layout editor

== Changelog ==

= 2.0.0 – 31 October 2026 =
A complete rebuild. Postify now has the same editor, options and front-end design as Eventful Pro, applied to your posts. Postify 1.x shortcodes keep working unchanged.
* New: six layout presets — Carousel (Standard, Ticker, Center and Multi Row styles), Slider, Grid, Minimal List, Timeline (vertical and horizontal) and Masonry.
* New: pre-made templates — three for Carousel, Slider, Grid, Masonry and Timeline, four for Minimal List — alongside the Custom template.
* New: Custom template content positions (default, image left, image right, overlay) and reorderable content fields.
* New: responsive columns at five screen widths, spacing between items and an equal-height option.
* New: timeline controls — five vertical and three horizontal styles, month and year separators, line thickness and colours.
* New: latest, sticky (featured) or hand-picked posts; include and exclude lists; exclude the current or password-protected posts.
* New: Sticky Posts option — normal order, pinned to the top, or hidden.
* New: filter by category and tag (IN, AND or NOT IN), keyword, publish timeframe, month, year, or a specific date, year or period.
* New: hide posts without a featured image; order by date, modified date, title, slug, ID, comment count, menu order or random.
* New: Ajax live filters by category, tag, timeframe, month and year, as buttons, dropdowns, radio buttons or checkboxes, with icons, labels, post counts, column layout and colours.
* New: live keyword search, a filter reset button and a show/hide filter toggle.
* New: Load More, Ajax page numbers, infinite scroll and classic pagination, with a separate type for mobile, custom labels, colours, borders and alignment.
* New: card border, radius, box shadow, padding, background and sticky-post background; section title; preloader.
* New: thumbnail size and crop, retina images, image replacement from the post's first image, video or audio, zoom and grayscale effects, border, radius and margins.
* New: meta fields for author (with avatar), date (published, modified or "time ago", with any format), categories or tags, comment count and reading time, each with its own icon.
* New: excerpt, trimmed or full content, with HTML tag control; Read More as a button or text link with its own colours and border.
* New: social sharing for 13 networks and custom fields from ACF, Pods, Toolset or post meta.
* New: link types — single page, popup (single or with next/previous), custom-field URL or none — with target and nofollow.
* New: typography for every element, including Google Fonts and tablet and mobile sizes.
* New: carousel and slider controls — autoplay, speed, loop, direction, rows, slides to scroll, transition effects, nine navigation positions, seven arrow styles, dots or numbers, dynamic bullets, adaptive height, touch, mouse drag, mouse wheel and keyboard navigation.
* New: a visual layout editor with a live preview, the layout presets beside the title and the shortcode in the sidebar.
* New: All Layouts screen with search, status tabs, bulk actions, duplicate and one-click shortcode copy.
* New: Settings — Color Scheme, Custom CSS and JavaScript (edited with WordPress's built-in code editor), carousel accessibility labels and asset loading.
* New: export and import of layouts and settings as JSON. Layouts exported from Eventful Pro can be imported too.
* New: Postify block for the block editor and widget for Elementor.
* New: Help screen with a getting-started guide.
* New: SEO schema markup — an ItemList of BlogPosting for each layout.
* All Postify 1.x shortcodes keep working, with every attribute and its 1.x default honoured. Theme 1 and Theme 2 use the Custom template; Theme 3 uses the pre-made date-badge template. Nothing in your content is changed and nothing is migrated.
* Postify's settings use their own `ta_postify_` option names, so they cannot collide with other plugins.
* Custom JavaScript can only be saved by users allowed to post unfiltered HTML.
* Imported layouts only bring in Postify's own settings, and never PHP objects.
* A post that contains a Postify shortcode can be listed by another layout without the two rendering each other endlessly.
* Postify and Eventful Pro can run side by side on the same page.
* Data is only removed on uninstall when "Delete All Data On Uninstall" is ticked.

= 1.1.1 =
* Tested with WordPress 6.9.

= 1.0 =
* Initial release.

== Upgrade Notice ==

= 2.0.0 =
A complete rebuild with six layouts, live filters, pagination and a new visual editor. Your Postify 1.x shortcodes keep working unchanged; nothing is migrated or removed.
