PHPackages                             considbrs-webdev/modularity-noticeboard - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. considbrs-webdev/modularity-noticeboard

ActiveWordpress-plugin[Utility &amp; Helpers](/categories/utility)

considbrs-webdev/modularity-noticeboard
=======================================

A Modularity module that implements a municipal digital noticeboard for publishing legally binding public notices—meeting summons, agendas, adjusted minutes and decisions—replacing the physical noticeboard, managing appeal deadlines under municipal law, and providing accessible, auditable, and integratable publication workflows.

054↓85%PHP

Since Apr 10Pushed 1mo agoCompare

[ Source](https://github.com/Considbrs-Webdev/modularity-noticeboard)[ Packagist](https://packagist.org/packages/considbrs-webdev/modularity-noticeboard)[ RSS](/packages/considbrs-webdev-modularity-noticeboard/feed)WikiDiscussions dev Synced 3w ago

READMEChangelogDependenciesVersions (2)Used By (0)

Modularity Noticeboard
======================

[](#modularity-noticeboard)

A Modularity module that implements a municipal digital noticeboard for publishing legally binding public notices—meeting summons, agendas, adjusted minutes and decisions—replacing the physical noticeboard, managing appeal deadlines under municipal law, and providing accessible, auditable, and integratable publication workflows.

Features
--------

[](#features)

### Custom Post Type for Notices

[](#custom-post-type-for-notices)

The plugin registers a custom post type `noticeboard_notice` for managing notices. Each notice can contain:

- Title and content
- Publication date
- Archive/expiration date
- Attached PDF documents
- Protocol links

### Taxonomies

[](#taxonomies)

Two taxonomies are available for organizing notices:

- **Notice Types** (`noticeboard_notice_type`) – Categorize notices by type (e.g., meeting summons, agendas, decisions, minutes)
- **Notice Groups** (`notice_group`) – Assign notices to responsible groups or departments (e.g., municipal board, committees)

### Modularity Module

[](#modularity-module)

The Noticeboard module can be placed on any page using Modularity and offers the following display settings:

- **Display style** – Choose how notices are presented (e.g., card view)
- **Number of notices** – Limit how many notices to show
- **Filter by notice type** – Show only specific types of notices
- **Group by notice type** – Organize displayed notices by their type
- **Archive mode** – Display all notices (useful for archive pages)
- **Archive link button** – Add a link to the full noticeboard archive

### Archive Support

[](#archive-support)

The plugin provides archive display capabilities:

- Built-in post type archive for notices
- Option to use a custom page as the archive
- Configurable URL slug for the post type
- Breadcrumb integration for navigation

Requirements
------------

[](#requirements)

- WordPress 5.0+
- [Modularity](https://github.com/helsingborg-stad/Modularity) plugin
- [Advanced Custom Fields PRO](https://www.advancedcustomfields.com/pro/)
- PHP 7.4+

Recommended:

- [Municipio](https://github.com/helsingborg-stad/municipio) theme (version 6.0.0+)

Installation
------------

[](#installation)

1. Download or clone the plugin to your `/wp-content/plugins/` directory:

    ```
    cd wp-content/plugins
    git clone https://github.com/considbrs-webdev/modularity-noticeboard.git
    ```
2. Install PHP dependencies:

    ```
    cd modularity-noticeboard
    composer install
    ```
3. Install JavaScript dependencies and build assets:

    ```
    npm install
    npm run build
    ```
4. Activate the plugin through the WordPress admin panel under **Plugins**.
5. Flush permalinks by visiting **Settings → Permalinks** and clicking "Save Changes".

Configuration
-------------

[](#configuration)

### General Settings

[](#general-settings)

Navigate to **Noticeboard → Settings** in the WordPress admin to configure:

- **Post type slug** – Customize the URL slug for notices (default: `notice`)
- **Custom archive page** – Optionally use a regular page as the noticeboard archive instead of the default post type archive
- **Archive page selection** – Choose which page to use as the archive when custom archive is enabled
- **Breadcrumb title** – Customize the title displayed in breadcrumbs
- **Archival action** – Choose what happens when a notice is archived:
    - **Unpublish** (default) – Sets the notice to draft status, preserving it for future reference
    - **Delete** – Permanently removes the notice from the database

### Setting Up Notice Types

[](#setting-up-notice-types)

1. Go to **Noticeboard → Types**
2. Add the types of notices you'll be publishing (e.g., "Meeting Summons", "Agenda", "Minutes", "Decision")
3. Configure display settings for each type if needed

### Setting Up Notice Groups

[](#setting-up-notice-groups)

1. Go to **Noticeboard → Groups**
2. Add groups representing the entities that publish notices (e.g., "Municipal Board", "Building Committee")

### Using the Module

[](#using-the-module)

1. Edit a page and add the **Noticeboard** module using Modularity
2. Configure the module settings:
    - Choose display style
    - Set number of notices to display
    - Select specific notice types to show (optional)
    - Enable grouping by notice type
    - Enable archive button to link to full noticeboard

Usage
-----

[](#usage)

### Creating a Notice

[](#creating-a-notice)

1. Go to **Noticeboard → Add New**
2. Enter the notice title
3. Add content or attach a PDF document
4. Select the appropriate notice type
5. Assign to the relevant group
6. Set publication and archive dates if applicable
7. Publish the notice

### Displaying Notices

[](#displaying-notices)

Add the Noticeboard module to any page through Modularity to display notices. For a full archive view, either:

- Use the built-in archive at `/notice/` (or your configured slug)
- Create a page with the Noticeboard module in archive mode

Hooks and Filters
-----------------

[](#hooks-and-filters)

The plugin provides several filters for customization:

- `Modularity/Module/Noticeboard/GroupIcon` – Customize the group icon
- `Modularity/Module/Noticeboard/GroupTitleVariant` – Customize group title heading level
- `Modularity/Module/Noticeboard/NoticeTitleVariant` – Customize notice title heading level
- `Modularity/Module/Noticeboard/TitleVariant` – Customize module title heading level
- `Modularity/Module/Noticeboard/ArchiveLabel` – Customize archive button text
- `Modularity/Module/Noticeboard/ArchiveIcon` – Customize archive button icon
- `Modularity/Module/Noticeboard/ArchiveButtonStyle` – Customize archive button styling

WP-CLI Commands
---------------

[](#wp-cli-commands)

The plugin includes WP-CLI commands for managing notices from the command line.

### Archive Notices

[](#archive-notices)

Archive notices that have passed their archive date:

```
# Archive all notices with passed archive dates
wp noticeboard archive

# Preview what would be archived (dry run)
wp noticeboard archive --dry-run
```

### List Notices

[](#list-notices)

List all notices with their archive status:

```
# List notices in table format
wp noticeboard list

# Output as JSON
wp noticeboard list --format=json

# Output as CSV
wp noticeboard list --format=csv
```

Automatic Archival (Cron Job)
-----------------------------

[](#automatic-archival-cron-job)

To automatically archive notices when their archive date passes, you need to set up a system cron job. The plugin does **not** automatically archive notices on its own—you must configure a scheduled task.

### Setting Up the Cron Job

[](#setting-up-the-cron-job)

Add a cron job to run the archive command daily (or at your preferred interval):

```
# Edit your crontab
crontab -e

# Add this line to run archival daily at 1:00 AM
0 1 * * * cd /path/to/wordpress && wp noticeboard archive --path=/path/to/wordpress
```

Replace `/path/to/wordpress` with the actual path to your WordPress installation.

### Alternative: Using WP-Cron

[](#alternative-using-wp-cron)

If you prefer using WordPress's built-in scheduling, you can create a custom plugin or add to your theme's `functions.php`:

```
// Schedule the archival check
add_action('init', function() {
    if (!wp_next_scheduled('noticeboard_archive_notices')) {
        wp_schedule_event(time(), 'daily', 'noticeboard_archive_notices');
    }
});

// Run the archival
add_action('noticeboard_archive_notices', function() {
    if (class_exists('WP_CLI')) {
        return; // Skip if running via WP-CLI
    }

    // Manually trigger archival logic here or use:
    // shell_exec('wp noticeboard archive --path=' . ABSPATH);
});
```

**Note:** System cron is more reliable than WP-Cron for time-sensitive operations like legal notice archival.

License
-------

[](#license)

MIT License - see [LICENSE](LICENSE) for details.

Author
------

[](#author)

Developed by [Consid Borås AB](https://github.com/considbrs-webdev)

###  Health Score

24

—

LowBetter than 31% of packages

Maintenance61

Regular maintenance activity

Popularity11

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity14

Early-stage or recently created project

 Bus Factor1

Top contributor holds 80.8% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/18331514?v=4)[Michael Claesson](/maintainers/michaelclaesson)[@michaelclaesson](https://github.com/michaelclaesson)

---

Top Contributors

[![michaelclaesson](https://avatars.githubusercontent.com/u/18331514?v=4)](https://github.com/michaelclaesson "michaelclaesson (21 commits)")[![WilliamLundqvist](https://avatars.githubusercontent.com/u/157830304?v=4)](https://github.com/WilliamLundqvist "WilliamLundqvist (5 commits)")

### Embed Badge

![Health badge](/badges/considbrs-webdev-modularity-noticeboard/health.svg)

```
[![Health](https://phpackages.com/badges/considbrs-webdev-modularity-noticeboard/health.svg)](https://phpackages.com/packages/considbrs-webdev-modularity-noticeboard)
```

###  Alternatives

[sabre/amf

SabreAMF is a Flash Remoting server and client for PHP

416.2k1](/packages/sabre-amf)[huang-yi/swoole-watcher

Swoole file watcher.

1414.9k2](/packages/huang-yi-swoole-watcher)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
