How to add custom fields to menu items

Have you ever felt the need to add custom fields to your menu items? It seems there isn’t a straight forward way to do this but there is certainly a way.

I wrote a script that will help you accomplish this, you can find it on github.

You only need to include both of the files found in the repository into your theme or plugin and require one of them, Menu.php.
As in the example:

require_once dirname( __FILE__ ) . '/Menu.php';

Then you can just build an array of the custom fields you need and pass it in as the argument of the Menu object.

$fields = array(
        '_mycustom_field_1' => array(
            'label' => __( 'Custom field 1', 'domain' ),
            'element' => 'input',
            'sanitize_callback' => 'sanitize_text_field',
            'attrs' => array(
                'type' => 'text',
        '_mycustom_field_2' => array(
            'label' => __( 'Custom field 2', 'domain' ),
            'element' => 'select',
            'sanitize_callback' => 'sanitize_text_field',
            'options' => array(
                'option-1' => __( 'Option 1', 'domain' ),
                'option-2' => __( 'Option 2', 'domain' ),
        // Menu Management custom fields.
        new \Lucymtc\Theme\Menu( $fields );

You will probably need to add some styling. Bellow you can find the visual result.
Hope you find this script useful!

How to add dynamic values into Contact Form 7 inputs

Contact Form 7 is a great plugin to add forms to your site, but these forms contain static inputs and sometimes we require to add inputs with dynamic values like a post ID or PHP variables like GET and POST.

This is very easy to do with the plugin Contact Form 7 Dynamic Text Extension.

This plugin adds two additional tag types to the Contact Form 7 plugin, these two types are Dynamic Text field and Dynamic Hidden field, the dynamic value for a scpecif input is generated throught a shortcode.

The plugin has it’s own shortcodes integrated, but you can create your own.

Let me put a very simple example:

Lets say you want to add a hidden input in your form which value should be the current post ID.
If you create your own shortcode it would look like this:

function cf7_add_post_id(){
    global $post;
    return $post->ID;
add_shortcode('CF7_ADD_POST_ID', 'cf7_add_post_id');

And the dynamic field in your form setup would look like this:

[dynamictext my-filed-name "CF7_ADD_POST_ID"]

The other way would be to use the plugin’s shortcodes.
In this case we want to have the current post ID so you would only have to add your dynamic field in the form setup like this:

[dynamictext my-filed-name "CF7_get_post_var key='ID'"]

The plugin has shortcodes for GET, POST, blog info, post info, current URL, custom fields, current user info, referrer URL.
You have all the details in the plugin’s page on

WP Import All, import any kind of data to your WordPress database

wp-all-importWp All Import is a great plugin to import any kind of data into your WordPress site.

You can import XML, CSV/Excel, JSON, SQL and in any kind of structure for posts, pages or custom post types.
With a simple and very easy to use drag and drop system to indicate what information is for what data base field.

It will import your images and also can autodetect the custom fields for the postmeta table.
They have an advanced version that supports Advanced Custom Fields and WooCommerce products.

The free version is very limited, it won’t work for the images or custom fields, wich I think you probably need in almost 100% of the cases. So if you are not a developer this plugin is worth the price.

I will tell you an example of when this plugin can be usefull. Imagine you run (or you have a client that runs) a portal of classified ads, a property portal or something similar, and you constantly have to import files with data from other external websites where each one sends you the data in a different structure and format. This plugin is great for that as you can also save the settings for each import as a template, so you only need to set up the import once and then load the template each time you need to import new data sent by the same source.

Check out the video on their page

Note: I used it in a site that manages classified ads, the user is able to create an ad, after that he receives a notification by email confirming the ad has been created. When I did the import of 1000 ads asigned to an author, the server tried to send 1000 email notifications. So be sure to turn off email notifications on this case scenario.

Set up Tiled Galleries without installing Jetpack


There is a lot of demand on having some of the functionality that Jetpack offers without having to install the Jetpack plugin.
You can find this plugin this plugin, by ThemePacific, useful to have a tiled gallery carousel, it’s pretty neat, does exactly what the Tiled Gallery in Jetpack does.

The options are:

  • Enable or disable the carousel.
  • Background color when displaying the carousel.
  • Display the photo metadata on the carousel.
  • Select the different gallery styles: Thumbnail Grid, Tiled Mosaic, Square Tiles and Circles.
  • And the option to set the galleries to Tiled Mosaic as default.

Check it out on the plugin repository.

Simple Cookie Notification Bar

As the name says, this plugin displays a notification bar at the bottom of your page informing about the use of cookies, responsive design.
A settings page easy to use and configure where you can change all the texts, colors and font size.

By default the plugin will display an “Accept” button to hide the notification, but you can also add a “More Information” button with any link.
It will cover you basic needs for this kind of notification.

You can download it for free on the plugin repository or directly clicking on the Download button on this page. And if you are happy with the plugin you can donate from the button bellow. Thanks!

Download Plugin



WP Migrate DB

By, with this plugin you can migrate your database from one WordPress installation to another in just a click, depending on how large your database is it will take longer or not to generate the database dump, but all in all it’s really quick, and definitely this is one of those plugins that I can’t live without.

I highly recommend it, it works beautifully! You can download it for free on the repository. It also has a premium version, which I have never tested as I really haven’t had  the necessity yet to purchase it, but checkout the futures on their webpage.

Duplicate Menu, time saver plugin

This is one of those simple but very useful plugins. It’s  a time saver.

With this plugin, as you have guessed already by it’s name,  you can duplicate a menu to add it anywhere else on your website.

So imagine you have a really huge (or not as huge) menu on your top navigation and you would like to add the same navigation to your footer. You will be able to do that in a few clicks  with this plugin, otherwise you would have to manually create the menu, add the pages (or whatever you want to add) one by one. So this plugin will save you a ton of time.

Check it out on the repository

After installing it just go to Appearance -> Duplicate menu.


Duplicate your menu, and then go to Appearance -> Menus, and you will see your new menu in the list.


Simple Follow Me Social Buttons Widget

Simple Follow Me Social Buttons Widget  is a very simple plugin to display the main social “follow me” buttons on your web. It uses an icon font instead of images, so this makes it very handy to style and it will display correctly in any screen.

No settings page or anything complicated to make it run. Only a simple widget that you can put in your sidebar, footer, header…

As it was mentioned before, it is easy to style and you can choose directly from the widget the color,  size,  text to display before the icons, if you want them rounded or squared.

Translations available:

Serbo-Croatian – Provided by Borisa Djuraskovic from Thank you!

Download from here (available on, and if you are happy and you want to thank the author (me!!) you can also find the donate button. Thanks!

Update :
I have paused the icon requests. I made the anouncement on the plugins support forum at plugin repository.
For more information:

If you have any problems or sugestion regarding to the plugin please refer yourself to the support forum of the plugin. Thanks.

Download Plugin