PHPackages                             helsingborg-stad/municipio - 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. helsingborg-stad/municipio

ActiveWordpress-theme

helsingborg-stad/municipio
==========================

A bootstrap theme for creating municipality sites.

6.33.0(1mo ago)4127.7k↓40%19[26 PRs](https://github.com/helsingborg-stad/Municipio/pulls)9MITPHPPHP ^8.2CI passing

Since Mar 9Pushed 1mo ago15 watchersCompare

[ Source](https://github.com/helsingborg-stad/Municipio)[ Packagist](https://packagist.org/packages/helsingborg-stad/municipio)[ RSS](/packages/helsingborg-stad-municipio/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (60)Versions (2098)Used By (9)

Municipio 3
===========

[](#municipio-3)

Download theme.
---------------

[](#download-theme)

To download a complete out of the box working plugin without the need to compile or fetch dependencies. Go [here](https://github.com/helsingborg-stad/Municipio/releases) and download the `full-release.zip` from the latest version.

Getting started
---------------

[](#getting-started)

It is recommended to install the bundled version of municipio trough our build management repository. [This can be found here.](https://github.com/municipio-se/municipio-deployment)

To get started you'll need to install the required npm and composer packages. To install these components you will need to have Node.js and Composer installed on your system.

```
$ cd [THEME-DIR]
$ php build.php

```

Dependencies
------------

[](#dependencies)

Municipio requires [ACF PRO](https://www.advancedcustomfields.com/pro/).

Coding standards
----------------

[](#coding-standards)

For PHP, use PSR-2 and PSR-4 where applicable.

Build System (Vite)
-------------------

[](#build-system-vite)

Municipio uses Vite for modern, fast asset building. Vite provides better performance, simpler configuration, and excellent ES module support.

### Development

[](#development)

To start the development server with file watching:

```
$ npm run dev

```

To build assets for development:

```
$ npm run build:dev

```

To watch and rebuild assets automatically during development:

```
$ npm run watch

```

### Production

[](#production)

To build optimized assets for production:

```
$ npm run build

```

NPM scripts
-----------

[](#npm-scripts)

- **dev**: Start Vite development server
- **watch**: Build assets in watch mode for development
- **build:dev**: Build assets for development
- **build**: Build assets for production with optimization and cache-busting
- **test**: Run Jest tests with coverage
- **i18n:update**: Updates languages/municipio.pot and languages/sv\_SE.po from source files. Run this when translatable strings have been added/updated. **Requires wp-cli**.
- **i18n:build**: Updates languages/municipio.mo .po file. Run this when changes have been made to the corresponding .po file. **Requires wp-cli**.

Composer
--------

[](#composer)

You can install composer dependencies with.

```
$ composer install

```

### Composer scripts

[](#composer-scripts)

```
composer run test # Run phpunit tests
```

```
composer run test:coverage # Run phpunit tests with code coverage
```

```
composer run lint # Run phpcs
```

```
composer run lint:changed # Run phpcs on changed files (Compares to main branch).
```

```
composer run fix # Run phpcbf to apply fixes to code.
```

```
composer run fix:changed # Run phpcbf to apply fixes to changed files (Compares to main branch).
```

Constants
---------

[](#constants)

### Block author pages

[](#block-author-pages)

Author pages is blocked by default. To "unblock" add the following constant to wp-config (or other suitable place).

```
define('MUNICIPIO_BLOCK_AUTHOR_PAGES', false);

```

### Load styleguide from a different host

[](#load-styleguide-from-a-different-host)

Constants for setting the base URI to the styleguide. Useful for third-party sites.

```
define('MUNICIPIO_STYLEGUIDE_URI', '//example.com/style/guide');

```

### Load specific version of styleguide

[](#load-specific-version-of-styleguide)

Constants that lock version of the styleguide. Comes in handy when you want to enshure maximum stability of a site.

```
define('STYLEGUIDE_VERSION', 1.0.32);

```

### Load specific developement version of styleguide

[](#load-specific-developement-version-of-styleguide)

Constant that load local verrsion of the styleguide.

```
define('DEV_MODE', true);

```

### CSS class in BEMIT style for theme name

[](#css-class-in-bemit-style-for-theme-name)

Constant that contains the current theme name in BEM format. Usable when you wnat to connect component styling directly to the theme.You cannot change this.

```
MUNICIPIO_BEM_THEME_NAME

```

Actions
-------

[](#actions)

### Municipio/blog/post\_info

[](#municipioblogpost_info)

Blog post info header (single)

- `@param object $post` - The post object

```
do_action('Municipio/author_display/name', $post);
```

### Municipio/share\_post/recipients

[](#municipioshare_postrecipients)

Do action on sharing post by email, e.g. send a notification

- `@param object $user` - User object for the sender
- `@param array $recipients` - List with e-mail addresses

```
do_action('Municipio/share_post/recipients', $user, $recipients);
```

### Municipio/comment/save\_like

[](#municipiocommentsave_like)

Do action on comment like

- `@param object $comment` - Comment object
- `@param int $userId` - Current user ID
- `@param bool $create` - True if a new like is created. False if it's removed

```
do_action('Municipio/comment/save_like', $comment, $userId, $create);
```

### Municipio/post/page/edit

[](#municipiopostpageedit)

Do action on post edit in admin. Runs after the current\_screen hook. Useful when something needs to execute when on the edit page of a post in admin and possibly needs access to the current post id or the post type of that post.

- `@param int $postId` - The post ID
- `@param string $postType` - The post type

```
do_action('Municipio/post/page/edit', $postId, $postType);
```

Filters
-------

[](#filters)

### Municipio/Template/viewData

[](#municipiotemplateviewdata)

- `@param array $viewData` - The view data that is passed to filter.

```
apply_filters('Municipio/Template/viewData', $viewData);
```

**Modifiers**

- `@param array $viewData` - The view data that is passed to filter.
- `@param string $postType` - The post type slug.
- `@param string $template` - The archive template name.

```
apply_filters('Municipio/Template/single/viewData', $viewData, $postType);
apply_filters('Municipio/Template/archive/viewData', $viewData, $postType, $template);
apply_filters("Municipio/Template/{$postType}/viewData", $viewData);
apply_filters("Municipio/Template/{$postType}/single/viewData", $viewData);
apply_filters("Municipio/Template/{$postType}/archive/viewData", $viewData, $template);
```

**Deprecated:**

- `Municipio/controller/base/view_data`
- `Municipio/blade/data`
- `Municipio/Controller/Archive/Data`
- `Municipio/viewData`

### Municipio/theme/key

[](#municipiothemekey)

Filters the theme/styleguide asset key.

- `@param string $key` - The key of the styleguide theme

```
apply_filters('Municipio/theme/key', $key);
```

### Municipio/author\_display/name

[](#municipioauthor_displayname)

Set the name of the author display

- `@param string $name` - Default name
- `@param string $userId` - The ID of the user

```
apply_filters('Municipio/author_display/name', $name, $userId);
```

### Municipio/author\_display/title

[](#municipioauthor_displaytitle)

Set the title label for the author name display

- `@param string $title` - Default title

```
apply_filters('Municipio/author_display/title', $title);
```

### Municipio/ajax\_url\_in\_head

[](#municipioajax_url_in_head)

Set the ajax\_url in the

- `@param string $ajax_url` - Default ajax url

```
apply_filters('Municipio/ajax_url_in_head', $ajax_url);
```

### Municipio/favicon\_sizes

[](#municipiofavicon_sizes)

Add sizes to theme options for favicon

- `@param array $sizes` - Default favicon sizes

```
apply_filters('Municipio/favicon_sizes', $sizes);
```

### Municipio/favicon\_tag

[](#municipiofavicon_tag)

Add sizes to theme options for favicon

- `@param string $tag` - The HTML tag(s)
- `@param array $icon` - The icon data

```
apply_filters('Municipio/favicon_tag', $tag, $icon);
```

### Municipio/header\_grid\_size

[](#municipioheader_grid_size)

Applied to classes string for header sizes.

- `@param string $classes` -

```
apply_filters('Municipio/header_grid_size', $classes);
```

### Municipio/mobile\_menu\_breakpoint

[](#municipiomobile_menu_breakpoint)

Applied to classes string for mobile hamburger menu breakpoint.

- `@param string $classes` - The default site name

```
apply_filters('Municipio/mobile_menu_breakpoint', $classes);
```

### Municipio/logotype\_text

[](#municipiologotype_text)

Applied to the text that displays as the logo when now logotype image is uploaded in theme options.

- `@param string $title` - The default site name

```
apply_filters('Municipio/logotype_text', $title);
```

### Municipio/logotype\_class

[](#municipiologotype_class)

Applied to the logotype class attirbute

- `@param array $classes` - Default class(es)

```
apply_filters('Municipio/logotype_class', $classes);
```

### Municipio/logotype\_tooltip

[](#municipiologotype_tooltip)

Applied to the logotype class attirbute

- `@param string $tooltip` - Default tooltip text

```
apply_filters('Municipio/logotype_tooltip', $tooltip);
```

### Municipio/blade/template\_types

[](#municipiobladetemplate_types)

Applied to the list of Blade template types.

- `@param array $types` - Dafault Blade template types

```
apply_filters('Municipio/blade/template_types', $types);
```

### Municipio/search\_result/…

[](#municipiosearch_result)

Multiple filters applied to the contents of a search result

- `@param string $var` - The content of the variable
- `@param object $post` - Post object

```
apply_filters('Municipio/search_result/date', $date, $post);
apply_filters('Municipio/search_result/title', $title, $post);
apply_filters('Municipio/search_result/excerpt', $excerpt, $post);
apply_filters('Municipio/search_result/permalink_url', $permalink_url, $post);
apply_filters('Municipio/search_result/permalink_text', $permalink_text, $post);
```

### Municipio/search\_form/…

[](#municipiosearch_form)

Filters applied to the search form

- `@param string $var` - The content of the variable

```
apply_filters('Municipio/search_form/action', $url);
```

### Municipio/archive/sort\_keys

[](#municipioarchivesort_keys)

Modify the avaiable sorting keys for archives

- `@param array $keys` - The keys
- `@param string $postType` - The post type

```
apply_filters('Municipio/archive/sort_keys', $keys, $postType);
```

### Municipio/archive/date\_filter

[](#municipioarchivedate_filter)

Modify the date filter WHERE clause

- `@param string $where` - The sql WHERE clause
- `@param string $from` - The "from" date from querystring
- `@param string $to` - The "to" date from querystring

```
apply_filters('Municipio/archive/date_filter', $where, $from, $to);
```

### Municipio/Breadcrumbs

[](#municipiobreadcrumbs)

Show/hide (true/false) breadcrumbs

- `@param boolean $bool`- True or false (show or hide)

```
apply_filters('Municipio/Breadcrumbs', $bool, get_queried_object())
```

### Municipio/Breadcrumbs/Items

[](#municipiobreadcrumbsitems)

Filter the items/links in the breadcrumb

- `@param array $items` - The breadcrumb items

```
apply_filters('Municipio/Breadcrumbs/Items', $items, get_queried_object());
```

### Municipio/admin/editor\_stylesheet

[](#municipioadmineditor_stylesheet)

Change custom editor stylesheet

- `@param string $url` - The stylesheet url

```
apply_filters('Municipio/admin/editor_stylesheet', $url);
```

### Municipio/oembed/should\_filter\_markup

[](#municipiooembedshould_filter_markup)

Decide if oembed markup should be filtered to HbgPrime video player (youtube and vimeo) or not.

- `@param string $url` - The resource url
- `@param int $postId` - Id of the current post

```
apply_filters('Municipio/oembed/should_filter_markup', true, $url, $postId);
```

### Municipio/Menu/Vertical/EnabledSidebars

[](#municipiomenuverticalenabledsidebars)

Dictates what sidebars that sould be active on the current page to show the vertical menu. Simple array containing the sidebar id's.

- `@param array $sidebars` - An flat array with sidebar id's.

```
apply_filters('Municipio/Menu/Vertical/EnabledSidebars', $sidebars);
```

### Municipio/archive/tax\_query

[](#municipioarchivetax_query)

Additional taxonomy queries.

- `@param array $taxQuery` - Holds the taxonomy query.
- `@param object $query` - Current query object.

```
apply_filters('Municipio/archive/tax_query', $taxQuery, $query);
```

### Municipio/taxonomy/tag\_style

[](#municipiotaxonomytag_style)

Adds custom style to taxonomy labels.

- `@param string $style` - Custom CSS.
- `@param string $term` - The term.
- `@param string $taxonomy` - Taxonomy.

```
apply_filters('Municipio/taxonomy/tag_style', $style, $term, $taxonomy);
```

### Municipio/Menu/Vertical/Items

[](#municipiomenuverticalitems)

Items that should be visible in the vertical navigation menus. Represented as dots with hover-labels.

- `@param array $items` - An array with items representing links.

```
apply_filters('Municipio/Menu/Vertical/EnabledSidebars', array(array('title' => 'Page section title', 'link' => '#anchorlink'));
```

### Municipio/ContentType/schemaParams

[](#municipiocontenttypeschemaparams)

Modify the schema parameters for a content type. This filter is applied to the array of schema parameters associated with a content type, allowing for the extension or modification of the structured data (schema.org) attributes for that content type.

- `@param array $schemaParams` - The default schema parameters for the content type.
- `@param string $contentTypeKey` - The key identifying the content type.

```
add_filter('Municipio/ContentType/schemaParams', function($schemaParams, $contentTypeKey) {
    if ($contentTypeKey === 'yourContentTypeKey') {
        $schemaParams['newParameter'] = [
            'schemaType' => 'Text',
            'value' => 'Custom Value'
        ];
    }

    return $schemaParams;
}, 10, 2);
```

### Municipio/Controller/SingularContentType/listing

[](#municipiocontrollersingularcontenttypelisting)

Modifies the listing array for the Place content type by appending location-related list items. This allows for the inclusion of additional information such as street name or a Google Maps link directly within the listing display.

- `@param array $listing` - The existing listing array that will be modified.
- `@param array $fields` - The fields associated with the post, used to extract location information.

```
add_filter('Municipio/Controller/SingularContentType/listing', function($listing, $fields) {
    // Example modification to the listing array
    if (!empty($fields['custom_field'])) {
        $listing['custom_field'] = $fields['custom_field'];
    }

    return $listing;
}, 10, 2);
```

### Municipio/DecoratePostObject

[](#municipiodecoratepostobject)

Filters the PostObject instance after it has been constructed and decorated.

This filter allows developers to further modify or decorate the PostObject instance before it is returned by the factory. It is useful for injecting additional behavior, properties, or wrappers around the PostObject, enabling extensibility and customization of the post object representation throughout the application.

- `@param \Municipio\PostObject\PostObjectInterface $postObject` - The decorated PostObject instance to be filtered.
- `@return \Municipio\PostObject\PostObjectInterface` - The (potentially further) decorated PostObject instance.

```
add_filter('Municipio/DecoratePostObject', function(PostObjectInterface $postObject):PostObjectInterface {
    // Example: Add custom decorator or modify the post object
    return new MyCustomPostObjectDecorator($postObject);
});
```

REST routes
-----------

[](#rest-routes)

The following REST API routes are available from the theme.

### `[GET] municipio/v1/view/render/{view}`

[](#get-municipiov1viewrenderview)

Returns html for the

- `@param string $view` - Path to the blade view to be rendered. Appended to the route.
- `@param object $data` - Data to be passed to the view.

Example usage

```
fetch('/wp-json/municipio/v1/view/render/partials/preloader')
    .then((response) => console.log(response))
```

Dev mode
--------

[](#dev-mode)

To load assets from local styleguide. Set contant DEV\_MODE to "true"

```
define('DEV_MODE', true);
```

Theme fonts
-----------

[](#theme-fonts)

Municipio is integrated with google web-fonts. It enables smart loading of fonts preventing invisible fonts using Google &amp; Adobe webfont loader.

```
define('WEB_FONT', 'Roboto'); //The google fonts name (without weights)
define('WEB_FONT_REMOTE', true); //Load font kit from cdn
```

Version 2.0
===========

[](#version-20)

The goal of version 2.0 is to restructure the theme frontend and move towards the BEM (IT) standard for markup. More filters will be added in a automatic manner, mutch like ACF doe's it. These will for now, be documented below.

Deprecated functionality (notice phase)
---------------------------------------

[](#deprecated-functionality-notice-phase)

Version 2.0 will introduce some warnings aboute the removal of some prevoius functionality. According to plan, this functionality will be actually be removed in version 3.0. Functions that will be removed in 3.0 are.

- Gravitiforms optimizations
- Honeypot functionality for comments (this will be moved to separate plugin). Will also include google recaptcha.
- Contact widget (replacement avabile in modularity)
- RichText Widget (replacement embedded in core)
- PostType &amp; Taxonomy creator (move to plugin)
- Upload filters (move to plugin)

Filters
-------

[](#filters-1)

### Deprecated filters

[](#deprecated-filters)

- HbgBlade/data replaced with Municipio/viewData
- Municipio/ajax\_url\_in\_head replaced with Municipio/ajaxUrl
- Modularity/CoreTemplatesSearchPaths

### Blade view filter

[](#blade-view-filter)

All variables sent (created) in a controller will automatically go trough a filter named with the variable key.

```
apply_filters('Municipio/{{KEY}}', $var);
```

Global view filter
------------------

[](#global-view-filter)

You may prefer to get a full array of everything sent to a view. After the filter above has run, a global filter will be applied. This replaces the old filter.

```
apply_filters('Municipio/viewData', $var);
```

Constants
---------

[](#constants-1)

MUNICIPIO\_FRAGMENT\_CACHE - Set to false to remove fragment cache.

Theme view structure
--------------------

[](#theme-view-structure)

```
bem-views
│   [Main folder for  theme views, containing WordPress templates like page.blade.php]
│
└───components
│   │   [Components for the theme like card.blade.php]
│   │
└───partials
│   │   [Big chunks that are reused in templates footer.blade.php]
│   │
└───templates
    │   [General templates that are included in main WordPress views like master.blade.php]
│   │
└───utilities
    │   [Small pieces used by components like button.blade.php]
│   │
└───widgets
    │   [Widgetized components]
    │

```

PHP Tests
---------

[](#php-tests)

Municipio uses [PHPUnit](https://phpunit.de/) for unit testing. For mocking and stubbing we use [WP\_Mock](https://wp-mock.gitbook.io/). This means that you can use WP\_Mock, [Mockery](https://github.com/mockery/mockery)(since this is a wrapper for WP\_Mock) and PHPUnit\_MockObject for mocking and stubbing.

### PHPUnit Tests file structure

[](#phpunit-tests-file-structure)

All tests are stored in the `tests/phpunit/tests` folder. The file structure should mirror the file structure of the theme. The file name should be the same as the file you want to test. For example, if you want to test the file `src/Controller/Base.php` you should create the file `tests/phpunit/tests/Controller/Base.php`. To avoid having too large test files, you can instead create a folder with the same name as the file you want to test and put the test files inside. Please note that for separating files by which class function you are testing, you should name the file e.g. `Base.functionName.php`.

### Running PHPUnit tests

[](#running-phpunit-tests)

Run `composer test` in the terminal.

### Running PHPUnit tests with code coverage

[](#running-phpunit-tests-with-code-coverage)

Run `composer test:coverage` in the terminal. This will generate a code coverage report in the `tests/phpunit/.coverage` folder.

Image compression
-----------------

[](#image-compression)

Municipio supports image compression with shortpixel. This will enque a cronjob with a slight delay to compress newly uploaded images. Simpley define SHORTPIXEL\_API\_KEY constant in your config file and that's it!

Compression level will be medium/glossy for high quality photos.

Tested with support from BrowserStack
-------------------------------------

[](#tested-with-support-from-browserstack)

This software is tested with the awesome tools from Browserstack.

[![](https://camo.githubusercontent.com/5318348d37eb32d113ae30b463d1cd8e98afbe18ea6046794d2eb8508e00a41a/68747470733a2f2f75747665636b6c696e672e68656c73696e67626f72672e73652f77702d636f6e74656e742f75706c6f6164732f73697465732f31392f323031382f30392f62726f77736572737461636b2d6c6f676f2e706e67)](https://browserstack.com)

###  Health Score

68

—

FairBetter than 100% of packages

Maintenance89

Actively maintained with recent releases

Popularity40

Moderate usage in the ecosystem

Community37

Small or concentrated contributor base

Maturity95

Battle-tested with a long release history

 Bus Factor3

3 contributors hold 50%+ of commits

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.

###  Release Activity

Cadence

Every ~2 days

Total

1919

Last Release

52d ago

Major Versions

1.7.0 → 2.0.42017-11-23

1.33.7 → 3.1.02023-09-25

3.70.8 → 4.0.02024-02-20

4.33.5 → 5.0.02024-06-27

5.177.7 → 6.0.02025-10-28

PHP version history (3 changes)4.0.0PHP ^8.0

4.28.0PHP ^8.1

5.36.5PHP ^8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/f46fe64973c3e89d15c745c0bf601c25983bafea81d30e64d4bf813a6f8c8c7c?d=identicon)[sebastianthulin](/maintainers/sebastianthulin)

---

Top Contributors

[![NiclasNorin](https://avatars.githubusercontent.com/u/103985736?v=4)](https://github.com/NiclasNorin "NiclasNorin (1121 commits)")[![sebastianthulin](https://avatars.githubusercontent.com/u/797129?v=4)](https://github.com/sebastianthulin "sebastianthulin (893 commits)")[![thorbrink](https://avatars.githubusercontent.com/u/1064724?v=4)](https://github.com/thorbrink "thorbrink (478 commits)")[![nRamstedt](https://avatars.githubusercontent.com/u/16800993?v=4)](https://github.com/nRamstedt "nRamstedt (434 commits)")[![annalinneajohansson82](https://avatars.githubusercontent.com/u/232372534?v=4)](https://github.com/annalinneajohansson82 "annalinneajohansson82 (411 commits)")[![silvergrund](https://avatars.githubusercontent.com/u/4200504?v=4)](https://github.com/silvergrund "silvergrund (222 commits)")[![alexanderbomanskoug2](https://avatars.githubusercontent.com/u/39676080?v=4)](https://github.com/alexanderbomanskoug2 "alexanderbomanskoug2 (113 commits)")[![Svanmark](https://avatars.githubusercontent.com/u/457482?v=4)](https://github.com/Svanmark "Svanmark (108 commits)")[![ergr1001](https://avatars.githubusercontent.com/u/97021637?v=4)](https://github.com/ergr1001 "ergr1001 (59 commits)")[![Muckbuck](https://avatars.githubusercontent.com/u/11438804?v=4)](https://github.com/Muckbuck "Muckbuck (54 commits)")[![faejr](https://avatars.githubusercontent.com/u/752642?v=4)](https://github.com/faejr "faejr (49 commits)")[![Sven65](https://avatars.githubusercontent.com/u/10225982?v=4)](https://github.com/Sven65 "Sven65 (41 commits)")[![perifer](https://avatars.githubusercontent.com/u/34488?v=4)](https://github.com/perifer "perifer (20 commits)")[![michaelclaesson](https://avatars.githubusercontent.com/u/18331514?v=4)](https://github.com/michaelclaesson "michaelclaesson (19 commits)")[![cedrikvonheiroth](https://avatars.githubusercontent.com/u/64852452?v=4)](https://github.com/cedrikvonheiroth "cedrikvonheiroth (14 commits)")[![Copilot](https://avatars.githubusercontent.com/in/1143301?v=4)](https://github.com/Copilot "Copilot (10 commits)")[![petter-a](https://avatars.githubusercontent.com/u/40427478?v=4)](https://github.com/petter-a "petter-a (10 commits)")[![yo-l1982](https://avatars.githubusercontent.com/u/154269?v=4)](https://github.com/yo-l1982 "yo-l1982 (7 commits)")[![jonatanhanson](https://avatars.githubusercontent.com/u/21363149?v=4)](https://github.com/jonatanhanson "jonatanhanson (7 commits)")[![JockeTF](https://avatars.githubusercontent.com/u/532268?v=4)](https://github.com/JockeTF "JockeTF (6 commits)")

---

Tags

hacktoberfestphpwordpress

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/helsingborg-stad-municipio/health.svg)

```
[![Health](https://phpackages.com/badges/helsingborg-stad-municipio/health.svg)](https://phpackages.com/packages/helsingborg-stad-municipio)
```

###  Alternatives

[league/commonmark

Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)

3.0k404.0M702](/packages/league-commonmark)[contao/core-bundle

Contao Open Source CMS

1231.6M2.4k](/packages/contao-core-bundle)[laravel-lang/publisher

Localization publisher for your Laravel application

2167.7M24](/packages/laravel-lang-publisher)[civicrm/civicrm-core

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

728272.9k20](/packages/civicrm-civicrm-core)[code16/sharp

Laravel Content Management Framework

78959.5k4](/packages/code16-sharp)

PHPackages © 2026

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