Home
Softono
b

beapi

Professional software vendor delivering innovative solutions on the Softono platform. Specialized in both open-source and proprietary software development.

Total Products
4

Software by beapi

beapi-frontend-framework
Open Source

beapi-frontend-framework

# Be API FrontEnd Framework [![Be API Github Banner](.github/banner-github.png)](https://beapi.fr) [![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://GitHub.com/Naereen/StrapDown.js/graphs/commit-activity) ## What is BFF ? **Be API Frontend Framework** *(or BFF)* is a WordPress theme boilerplate designed to assist you in launching your own WordPress theme using modern tools. ## Requirements ### Composer You need composer to autoload all your classes from the inc folder. Use the `beapi/composer-scaffold-theme` package that add it automatically to the composer.json file. You can add it yourself like this : ```composer.json "autoload": { "psr-4": { "BEA\\Theme\\Framework\\": "content/themes/framework/inc/" } } ``` ### Autoload The autoload is based on psr-4 and handled by composer. ### Node.js You need [the latest stable version of Node.js](https://nodejs.org/). ## Installation Download the latest release of BFF [here](https://github.com/BeAPI/beapi-frontend-framework/releases) and extract the zip archive into your `themes` WordPress's folder. ```bash |____wp-admin |____wp-content | |____plugins | |____themes | | |____beapi-frontend-framework | |____uploads |____wp-includes ``` Of course, you can rename `beapi-frontend-framework` to define your WordPress theme's name. Next, go to your theme folder (in the following example, I didn't rename `beapi-frontend-framework`) with your favorite Term software. ```bash cd wp-content/themes/beapi-frontend-framework ``` Then install node dependencies with Yarn. ```bash yarn ``` Alternatively, you can use NPM. ```bash npm install ``` ## Configuration The configurations files are in `config` directory. ### Webpack You can find the common Webpack settings file in `webpack.common.js`. For development mode purpose, you can edit `webpack.dev.js` file and for production mode, you can edit `webpack.prod.js`. You also have the loaders in `loaders.js` file and Webpack's plugin in `plugins.js` file. ## How to use BFF ? After installing dependencies, you can run some commands which are explained below. ### Start with Browser Sync BFF is configured to work with [lando](https://lando.dev/). If you have a `.lando.yml` file in your project's root, set the path to your file in the `browsersync.config.js` file. ```js let fileContents = fs.readFileSync('../../../../.lando.yml', 'utf8') ``` Then, run the following command from the theme : ```bash yarn start ``` BrowserSync will proxy your lando'server based on the name defined in your `.lando.yml`. ### Build ```bash yarn build ``` ### Bundle report You can launch a bundle report with the following command : ```bash yarn bundle-report ``` ## WordPress Editor (Gutenberg) ### Customize blocks The `bff_editor_custom_settings` filter allow you to customize blocks styles and variations. For example: ```php add_filter( 'bff_editor_custom_settings', 'customize_editor_settings', 10, 1 ); function customize_editor_settings( $settings ) { // Disable all block styles for Separator block $settings[ 'disableAllBlocksStyles' ] = [ 'core/separator' ]; // Disable specific block style for Button block $settings[ 'disabledBlocksStyles' ] = [ 'core/button' => [ 'outline' ] ]; // Allow only YouTube variation for Embed block $settings[ 'allowedBlocksVariations' ] = [ 'core/embed' => [ 'youtube' ] ]; return $settings; } ```

WordPress Themes & Plugins
70 Github Stars
acf-options-for-polylang
Open Source

acf-options-for-polylang

<a href="https://beapi.fr">![Be API Github Banner](.wordpress-org/banner-github.png)</a> # BEA - ACF Options For Polylang [![CodeFactor](https://www.codefactor.io/repository/github/beapi/acf-options-for-polylang/badge)](https://www.codefactor.io/repository/github/beapi/acf-options-for-polylang) Are you using Advanced Custom Fields for option pages and Polylang for your multilingual site? Polylang does not natively support ACF Option Pages, so option values are shared across all languages. This plugin improves that: Once activated, you’ll be able to set different values for each language. If a value isn’t set for a specific language, the “All languages” value will be used by default. # How does it work? This plugin saves separate values for each language in the database. Polylang’s language settings are then used to fetch the appropriate value from the database. <b>Note: When you activate the plugin, your existing option values will be temporarily unavailable but remain in the database. You can recover them by deactivating the plugin.</b> To set or update your option pages in a specific language, simply use the Polylang language flags in the WordPress admin bar (the integrated language switcher) to select your desired language before editing the options. # Requirements - [WordPress](https://wordpress.org/) 6.0+ / Tested from 6.0 to latest - PHP 7.4 to 8.4 / Tested from 7.4 to 8.4 - [Advanced Custom Fields](https://www.advancedcustomfields.com/pro) 5.6.0+ - [Polylang](https://polylang.pro/) (tested up to 3.7.7) # Installation First activate and configure Polylang in you site. Then activate ACF Options For Polylang to handle ACF Options in setted Polylang's languages. ## WordPress - Download and install using the built-in WordPress plugin installer. - Site activate in the "Plugins" area of the admin. - Optionally drop the entire `acf-options-for-polylang` directory into mu-plugins. - Nothing more, this plugin is ready to use ! ## [Composer](http://composer.rarst.net/) - `composer require wpackagist-plugin/acf-options-for-polylang` - Nothing more, this plugin is ready to use ! # What ? ## Contributing Please refer to the [contributing guidelines](.github/CONTRIBUTING.md) to increase the chance of your pull request to be merged and/or receive the best support for your issue. ### Testing This plugin includes a comprehensive unit test suite: **61 tests**, **92 assertions**, **0 skips**. Tests run with Polylang fully initialized via wp-env. Quick start: ```bash npm install && composer install npm run wp-env:start npm run test:unit ``` See [TESTING.md](TESTING.md) for detailed testing documentation, test matrix, and writing guidelines. ### Issues & features request / proposal If you identify any errors or have an idea for improving the plugin, feel free to open an [issue](../../issues/new). Please provide as much info as needed in order to help us resolving / approve your request. ## For developers ## Using fields Nothing change, we have made all the hooks for you, so no need to prefix your fields with a lang or something else. Only use ACF's helpers to get and show the fields as you did before with [get_field()](https://www.advancedcustomfields.com/resources/get_field/) or the_field() : `get_field( 'footer_disclaimer', 'options' );` ## Excluding Option Pages from Localization If you want to prevent this plugin from applying its functionality to a specific ACF options page, you can exclude it by adding its `post_id` to the exclusion filter. Add the following code to your theme or custom plugin (replace `'custom_options_page_post_id'` with your actual options page post ID): ```php add_filter( 'bea.aofp.excluded_post_ids', function( $ids ) { $ids[] = 'custom_options_page_post_id'; // Exclude this options page from localization return $ids; }, 10, 1 ); ``` This will ensure that the specified options page is not affected by language-specific behavior and will always load/save its values without localization. ## Language attribute for option key suffix By default, the plugin uses Polylang’s **locale** (e.g. `fr_FR`, `en_US`) as the suffix for option keys. You can switch to **slug** (e.g. `fr`, `en`) or another Polylang language field. **Option 1 – Constant** (e.g. in `wp-config.php`, before the plugin loads): ```php define( 'BEA_ACF_OPTIONS_FOR_POLYLANG_LANG_ATTRIBUTE', 'slug' ); ``` **Option 2 – Filter** (in theme or plugin): ```php add_filter( 'bea.aofp.lang_attribute', function( $attribute ) { return 'slug'; // or 'locale', 'name', etc. } ); ``` The value must be a valid Polylang attribute for `pll_current_language()` / `pll_languages_list()` (e.g. `locale`, `slug`, `name`). ## Default Values (“All languages” Fallback) By default, this plugin will use the Polylang “All languages” value when there is no value set for the current language. If you prefer not to use this fallback behavior, you can easily disable it using a filter. ### Disable fallback for all ACF Options pages Add this code to your theme or plugin: ```php add_filter( 'bea.aofp.get_default', '__return_false' ); ``` ### Disable fallback for a specific ACF Options page You can target a single ACF Options page using the `$post_id` parameter: ```php add_filter( 'bea.aofp.get_default', function( $show_default, $post_id ) { if ( 'my_custom_acf_option_post_id' === $post_id ) { // Disable default fallback for this specific ACF Options page return false; } return $show_default; }, 10, 2 ); ``` > **Note**: If you change this value dynamically or rely on the default/all languages fallback, you may sometimes need to clear ACF's internal cache so that your changes are properly recognized. To do this, use: ```php // Clear ACF store $store = acf_get_store('values'); $store->reset(); ``` — this will force ACF to reload the values from the database on the next request. ## Loading untranslated (default) option values When you need to read the **default / untranslated** values (the ones stored without a language suffix, used as fallback when no translation exists), use the context switch API. This applies to all fields, including repeater sub-fields and relationship fields. ### Switch / restore context - **`bea_aofp_switch_to_untranslated()`** — subsequent `get_field( ..., option_page_id )` and `have_rows( ..., option_page_id )` will load values from the unsuffixed key (default values). - **`bea_aofp_restore_current_lang()`** — restores the previous context; option values are again loaded for the current language. Calls can be nested: each `restore_current_lang()` undoes the last `switch_to_untranslated()`. ### Example ```php // Current language values $title = get_field( 'site_title', 'theme-general-settings' ); // Temporarily load default (untranslated) values bea_aofp_switch_to_untranslated(); $default_title = get_field( 'site_title', 'theme-general-settings' ); if ( have_rows( 'links', 'theme-general-settings' ) ) { while ( have_rows( 'links', 'theme-general-settings' ) ) { the_row(); $default_related_post = get_sub_field( 'related_post' ); // Also uses default context } } bea_aofp_restore_current_lang(); // Back to current language $title_again = get_field( 'site_title', 'theme-general-settings' ); ``` # Who ? Created by [Be API](https://beapi.fr), the French WordPress leader agency since 2009. Based in Paris, we are more than 30 people and always [hiring](https://beapi.workable.com) some fun and talented guys. So we will be pleased to work with you. This plugin is only maintained, which means we do not guarantee some free support. Consider reporting an [issue](#issues--features-request--proposal) and be patient. If you really like what we do or want to thank us for our quick work, feel free to [donate](https://www.paypal.me/BeAPI) as much as you want / can, even 1€ is a great gift for buying cofee :) ## License BEA - ACF Options for Polylang is licensed under the [GPLv2 or later](LICENSE.md).

WordPress Themes & Plugins
179 Github Stars
acf-svg-icon
Open Source

acf-svg-icon

# Advanced Custom Fields: SVG Icon # This enhance [Advanced Custom Field](https://www.advancedcustomfields.com/pro/) plugin by adding a custom field. This ACF field is a select2 field in order to include your great fonts. It will allow you to select icons and then return the corresponding class icon. ## Compatibility This ACF field type is compatible with: * ACF 5.0.0 and up, that means the pro version. * ACF 4 (not supported). ## Installation ### via Composer 1. Add a line to your repositories array: `{ "type": "git", "url": "https://github.com/BeAPI/acf-svg-icon" }` 2. Add a line to your require block: `"bea/acf-svg-icon": "dev-master"` 3. Run: `composer update` ### Manual 1. Copy the plugin folder into your plugins folder. 2. Activate the plugin via the plugins admin page. 3. Create a new field via ACF and select the SVG Icon selector. ## How to ## ### Upload SVG into library You can upload media in your library, it must be an <b>SVG</b>, and then it will be displayed into the SVG dropdown. In this case, consider using [Scalable Vector Graphics (svg)](https://fr.wordpress.org/plugins/scalable-vector-graphics-svg) for security. ### In your own theme ### To load several SVGs from your theme (development), use the following filter to add the main sprite SVG file : ```php <?php add_filter( 'acf_svg_icon_filepath', 'bea_svg_icon_filepath' ); function bea_svg_icon_filepath( $filepath ) { if ( is_file( get_stylesheet_directory() . '/assets/icons/icons.svg' ) ) { $filepath[] = get_stylesheet_directory() . '/assets/icons/icons.svg'; } return $filepath; } ``` ## Contributing ## If you gonna change some JS or CSS, we use GULP in order to uglify and minify assets. So please do the following for your PR : 1. install node modules : `npm install` 2. install gulp dependencies : `npm install gulp` 3. then minify assets : `gulp dist` ## Changelog ## ### 2.2.0 - 19 May 2026 * FIX : Invalid plugin's SVG cache when a SVG is added or removed from the media library * FEATURE : Add admin bar button to flush plugin's SVG cache ### 2.1.3 - 17 Jul 2023 * FEATURE : Skip media type for displaying svgs as we use the URL ### 2.1.2 - 17 Jul 2023 * FIX : fix PHP fatal error in the REST API for ACF's values from the field ### 2.1.1 - 12 Apr 2023 * FEATURE : add french translation ### 2.1.0 - 29 Nov 2021 * FEATURE : return sprite name if multiple SVG sprites are registered * FIX : Replace `gulp-uglify` with `gulp-uglify-es` * CHORE : set required Node version in package.json ### 2.0.4 - 28 Oct 2019 * FEATURE : add filter `acf_svg_icon_parsed_svg` to filter the icons list * FIX : fix PHP fatal error with SVG inclusion * FIX : temporary fix an issue with acf_format method * IMPROVE : respect WP coding standards ### 2.0.3 - 04 Feb 2019 * FIX : Mixing custom and media sources ### 2.0.2 - 04 Feb 2019 * FIX : Return array in get_all_svg_files function (reverted in 2.0.3) ### 2.0.1 - 19 Nov 2018 * FEATURE [#8](https://github.com/BeAPI/acf-svg-icon/issues/8) : improve performances on parsing svg from library * FEATURE [#9](https://github.com/BeAPI/acf-svg-icon/issues/9) : upload custom SVGs ### 1.2.1 - 21 Aug 2017 * fix notice $acf->version property undefined on ACF versions under 5.6 * use built-in wrapper acf_get_setting('version') to retrieve version ### 1.2.0 - 27 July 2017 * Add compatibility for ACF 5.6.0 and more versions * Still keep compatibility for ACF 5.6.0 and lower versions * Add some custom CSS for a more beautiful admin UI * Now displaying the icon name, not anymore like a slug * Improve readme ### 1.0.1 - 11 May 2017 * Initial

WordPress Themes & Plugins Icon Libraries
49 Github Stars
bea-content-sync-fusion
Open Source

bea-content-sync-fusion

<a href="https://beapi.fr">![Be API Github Banner](.github/banner-github.png)</a> # BEA - Content Sync Fusion WordPress **multisite** plugin to **synchronize posts, attachments, taxonomies, and cross-site relations** between blogs using **emitter / receiver** rules, an **async queue**, and a **global relations table**. **Current version:** 3.13.0 ## Requirements | Requirement | Notes | |-------------|--------| | WordPress | [Multisite](https://developer.wordpress.org/advanced-administration/multisite/create-network/) install, **4.9+** ([`WP_Site_Query`](https://developer.wordpress.org/reference/classes/wp_site_query/)) | | PHP | **8.3+** (see plugin header `Requires PHP`) | | Scheduling | Server **cron** should drive the queue via **WP-CLI** (see [Cron & queue](#cron--queue)) | ## Installation 1. **GitHub releases** — ZIP from [releases](https://github.com/BeAPI/bea-content-sync-fusion/releases). 2. **Composer** — add to your project: ```json "require": { "bea/bea-content-sync-fusion": "*" } ``` 3. **Git clone** — run `composer install` at the plugin root (PHP dependencies include `beapi/gutenberg-serializer`). **Network-activate** the plugin (Network Admin → Plugins). Activation creates or updates global tables: `bea_csf_relations`, `bea_csf_queue`, `bea_csf_queue_maintenance`. ### Major upgrades (queue schema) Some releases alter the queue table schema. Follow the notes in [CHANGELOG.md](CHANGELOG.md) (e.g. network deactivate / reactivate when required). ## Configuration Use **Network Admin** to define synchronizations (emitters, receivers, post types, taxonomies, media behaviour). **Metaboxes** on individual sites control manual mode, exclusions, and attachment inclusion depending on settings. ### Optional constant - `BEA_CSF_MEDIA_FEATURE` — defaults to `true`; set to `false` **before** the plugin loads to disable shared media handling (see `bea-content-sync-fusion.php`). ## Cron & queue Processing is queue-based and intended to run through **WP-CLI**. A reference Bash driver is included: - [`cron/cronjob.sh`](cron/cronjob.sh) — arguments: network URL, WP-CLI binary, WordPress path, alternate queue flag, extra WP-CLI args. Typical setup: run **every minute** on the server; adjust the CLI binary (`wp`, `lando wp`, etc.). More informations on the [wiki](https://github.com/BeAPI/bea-content-sync-fusion/wiki/CRON-Jobs). ## WP-CLI Command namespace: **`content-sync-fusion`**. ```bash wp help content-sync-fusion ``` Registered subcommands: | Command | Purpose | |---------|---------| | `content-sync-fusion queue` | Queue stats, flush / pull, list site URLs with queued work | | `content-sync-fusion flush` | Flush / targeted sync (see `wp help` for flags) | | `content-sync-fusion resync` | Resync content (e.g. `--smart=true` to iterate emitter blogs only) | | `content-sync-fusion relation` | Mirror two sites / rebuild relations (e.g. after cloning) | | `content-sync-fusion migration` | Migrate legacy meta-based relations to the relations table | For flags such as `--quantity`, `--alternativeq`, or post type / taxonomy / attachment filters, run `wp help content-sync-fusion <subcommand>`. ## WordPress compatibility Targets **WordPress 4.9+** on multisite (including current 6.x releases while APIs remain compatible). ## Third-party integrations Dedicated addons load when these plugins are active: - [WooCommerce](https://wordpress.org/plugins/woocommerce/) (products & variations) - [Polylang](https://wordpress.org/plugins/polylang/) - [Advanced Custom Fields](https://www.advancedcustomfields.com/) (including Gutenberg ACF blocks) - [Yoast SEO](https://wordpress.org/plugins/wordpress-seo/) (e.g. meta images) - [Post Types Order](https://wordpress.org/plugins/post-types-order/) - [The Events Calendar](https://theeventscalendar.com/) family - [Revisionize](https://wordpress.org/plugins/revisionize/) - [Multisite Clone Duplicator](https://wordpress.org/plugins/multisite-clone-duplicator/) - **Gutenberg** block serialization / sync - [Members](https://wordpress.org/plugins/members/) (metabox compatibility) ## Developer API (overview) - `bea_csf_upload_dir()` — cached helper around `wp_upload_dir()` for multisite. - `register_synchronization( $args )` — programmatic registration (see [documentation](https://github.com/BeAPI/bea-content-sync-fusion/wiki/Synchronizations-API)). Many `bea_csf_*` filters and actions exist in the codebase for capabilities, merge behaviour, fields, etc. ## Development ```bash composer install composer cs # PHPCS (phpcs.xml) composer test-unit composer test-wpunit ``` ## Changelog Full history: **[CHANGELOG.md](CHANGELOG.md)**. ## Who? Built by [Be API](https://beapi.fr). This plugin is **maintained** without a promise of free support—please [open an issue](https://github.com/BeAPI/bea-content-sync-fusion/issues) if needed. Donations: [PayPal](https://www.paypal.me/BeAPI). ## License GPL-2.0-or-later — see [LICENSE](LICENSE).

Storage & Backup WordPress Themes & Plugins
45 Github Stars