/** * Plugin Name: Custom WooCommerce Currency Switcher * Description: A floating currency switcher for WooCommerce with a pop-up selector. * Version: 1.2 * Author: Your Name * License: GPL2 */ // Enqueue CSS and JavaScript function custom_currency_switcher_assets() { wp_enqueue_style('currency-switcher-css', plugin_dir_url(__FILE__) . 'css/currency-switcher.css'); wp_enqueue_script('jquery'); wp_enqueue_script('currency-switcher-js', plugin_dir_url(__FILE__) . 'js/currency-switcher.js', array('jquery'), null, true); wp_localize_script('currency-switcher-js', 'currencySwitcherAjax', array( 'ajax_url' => admin_url('admin-ajax.php'), )); } add_action('wp_enqueue_scripts', 'custom_currency_switcher_assets'); // Ensure WooCommerce session starts properly function start_woocommerce_session() { if (!session_id()) { session_start(); } if (WC()->session) { WC()->session->set('currency', WC()->session->get('currency', 'USD')); } } add_action('init', 'start_woocommerce_session'); // Currency symbols mapping function get_currency_symbols() { return array( 'USD' => '$', 'NGN' => '₦', 'GHS' => '₵', 'ZAR' => 'R' ); } // Add currency switcher HTML (Removed from checkout page) // Add currency switcher only on specific pages function custom_currency_switcher_html() { if (is_checkout() || is_shop()) { return; // Don't show on checkout or shop page } // Check if we're on a single product page and if the product belongs to the "recipe-book" category if (is_product()) { global $post; $product = wc_get_product($post->ID); if (!$product || !has_term('recipe-book', 'product_cat', $product->get_id())) { return; // Hide switcher if not in the "recipe-book" category } } // Ensure it shows on the cart page if (is_cart() || is_product()) { $selected_currency = WC()->session->get('currency', 'USD'); $currencies = array('USD' => 'USD', 'NGN' => 'NGN', 'GHS' => 'GHS', 'ZAR' => 'ZAR'); echo '
'; echo '
Currency: ' . esc_html($selected_currency) . '
'; echo '
'; // Currency Popup echo '
'; echo ''; echo ''; echo '
'; } } add_action('wp_footer', 'custom_currency_switcher_html'); // Handle AJAX currency switching function set_currency() { if (!WC()->session) { WC()->initialize_session(); } if (isset($_POST['currency'])) { $currency = sanitize_text_field($_POST['currency']); WC()->session->set('currency', $currency); // Ensure prices update dynamically via AJAX WC()->cart->calculate_totals(); wp_send_json_success(array('currency' => $currency)); } else { wp_send_json_error(array('message' => 'Invalid request')); } wp_die(); } add_action('wp_ajax_set_currency', 'set_currency'); add_action('wp_ajax_nopriv_set_currency', 'set_currency'); // Display correct price and currency symbol function custom_currency_display_price($price, $product) { if (!WC()->session) { WC()->initialize_session(); } $selected_currency = WC()->session->get('currency', 'USD'); $currency_symbols = get_currency_symbols(); $custom_price = get_post_meta($product->get_id(), '_custom_price_' . strtolower($selected_currency), true); if (!empty($custom_price)) { $symbol = isset($currency_symbols[$selected_currency]) ? $currency_symbols[$selected_currency] : $selected_currency; return $symbol . number_format($custom_price, 2); } return $price; } add_filter('woocommerce_get_price_html', 'custom_currency_display_price', 10, 2); // Update Cart & Checkout Prices Based on Selected Currency function update_cart_totals($cart) { if (!WC()->session) { return; } $selected_currency = WC()->session->get('currency', 'USD'); $currency_symbols = get_currency_symbols(); foreach ($cart->get_cart() as $cart_item) { $product = wc_get_product($cart_item['product_id']); $custom_price = get_post_meta($product->get_id(), '_custom_price_' . strtolower($selected_currency), true); if (!empty($custom_price)) { $cart_item['data']->set_price($custom_price); } } } add_action('woocommerce_before_calculate_totals', 'update_cart_totals', 10, 1); // Ensure Checkout Uses Selected Currency and Symbol function set_currency_at_checkout($currency) { if (WC()->session) { return WC()->session->get('currency', 'USD'); } return $currency; } add_filter('woocommerce_currency', 'set_currency_at_checkout'); // Add AJAX refresh for cart page when switching currency function refresh_cart_on_currency_change() { wc_add_notice(__('Currency updated successfully.', 'woocommerce'), 'success'); wp_send_json_success(); } add_action('wp_ajax_refresh_cart', 'refresh_cart_on_currency_change'); add_action('wp_ajax_nopriv_refresh_cart', 'refresh_cart_on_currency_change'); // Add custom price fields for different currencies in the product edit page function add_custom_currency_fields() { global $post; echo '
'; $currencies = array( 'USD' => 'US Dollar', 'NGN' => 'Nigerian Naira', 'GHS' => 'Ghanaian Cedi', 'ZAR' => 'South African Rand' ); foreach ($currencies as $currency_code => $currency_label) { woocommerce_wp_text_input(array( 'id' => '_custom_price_' . strtolower($currency_code), 'label' => __('Price in ' . $currency_label, 'woocommerce'), 'desc_tip' => 'true', 'description' => __('Set a fixed price for ' . $currency_label . '.', 'woocommerce'), 'type' => 'number', 'custom_attributes' => array( 'step' => '0.01', 'min' => '0' ), )); } echo '
'; } add_action('woocommerce_product_options_pricing', 'add_custom_currency_fields'); // Save the custom prices function save_custom_currency_fields($post_id) { $currencies = array('USD', 'NGN', 'GHS', 'ZAR'); foreach ($currencies as $currency) { $field_id = '_custom_price_' . strtolower($currency); if (isset($_POST[$field_id])) { update_post_meta($post_id, $field_id, sanitize_text_field($_POST[$field_id])); } } } add_action('woocommerce_process_product_meta', 'save_custom_currency_fields'); // Handle AJAX request to fetch product price based on selected currency function get_product_price_by_currency() { if (!isset($_POST['product_id']) || !isset($_POST['currency'])) { wp_send_json_error(array('message' => 'Invalid request.')); } // Get the product ID and selected currency $product_id = intval($_POST['product_id']); $currency = sanitize_text_field($_POST['currency']); // Ensure WooCommerce session is initialized if (!WC()->session) { WC()->initialize_session(); } // Define your currency symbols mapping (you can modify it) $currency_symbols = array( 'USD' => '$', 'NGN' => '₦', 'GHS' => '₵', 'ZAR' => 'R', ); // Get the custom price for the selected currency $custom_price = get_post_meta($product_id, '_custom_price_' . strtolower($currency), true); // If custom price is not set, use the regular price if (empty($custom_price)) { $product = wc_get_product($product_id); $custom_price = $product->get_price(); } // Get the correct currency symbol $currency_symbol = isset($currency_symbols[$currency]) ? $currency_symbols[$currency] : '$'; // Return the formatted price wp_send_json_success(array( 'price' => $currency_symbol . number_format($custom_price, 2), )); } add_action('wp_ajax_get_product_price', 'get_product_price_by_currency'); add_action('wp_ajax_nopriv_get_product_price', 'get_product_price_by_currency'); Ogbono Soup – Joyful-cook Skip to main content

Ogbono Soup

Ogbono Soup, a beloved Nigerian classic bursting with rich flavors and wholesome ingredients. Perfect for pairing with your favorite swallows or enjoyed on its own, this soup is a true taste of home and tradition.

Ogbono Soup

Ogbono Soup: A Bowl of Delicious Tradition

I’m thrilled to share one of my all-time favorite soups with you—Ogbono Soup! This dish holds a special place in my heart because it’s not just a meal, it’s an experience. With its rich, nutty aroma, velvety texture, and bold flavors, Ogbono Soup is the ultimate comfort food. Whether you’re enjoying it on a chilly day or serving it up as a star dish at family gatherings, this soup never disappoints.


What is Ogbono Soup?

Ogbono Soup is a beloved dish from Nigeria, made with ground Ogbono seeds (wild mango seeds) that give it its signature thickness and slightly tangy flavor. It’s a hearty, nutrient-packed soup typically cooked with a variety of meats, fish, and leafy vegetables. This soup is the perfect pairing for classic Nigerian swallows like pounded yam, eba, or amala, making it a staple in many households.


Main Ingredients and Substitutions

Here’s what makes this soup special:

  • Ogbono Seeds: The star of the show, these ground seeds create the soup’s unique texture and flavor.
  • Meats: A blend of beef ribs, shaki (tripe), and pomo (cow skin) adds a variety of textures. Not a fan? You can use chicken, turkey, or goat meat instead.
  • Fish: Catfish and smoked mackerel give the soup its smoky, savory depth. Substitute with dried shrimp or smoked haddock if needed.
  • Vegetables: Traditional pumpkin leaves are the go-to, but kale, spinach, or even collard greens work just as well.
  • Palm Oil: This adds richness and that vibrant golden-red color. You can use vegetable oil, but you’ll miss out on the authentic flavor.
  • Ogiri or Dawadawa: Fermented locust beans add a deep umami flavor. Miso paste can work as a substitute in a pinch.

How to Prepare Ogbono Soup

Making Ogbono Soup is as enjoyable as eating it! Let’s break it down step by step:

Step 1: Cook the Meat

Start by combining beef ribs, shaki, and pomo in a pot. Add chopped onions, two seasoning cubes, and a pinch of salt. Stir, cover, and let the meats cook in their juices for 10–15 minutes.

Step 2: Prep the Fish

While the meat is cooking, soak the catfish in hot water with a bit of salt for 5 minutes to remove sand. Rinse thoroughly. Next, clean the smoked mackerel, removing the head and bones, and cut it into two halves.

Step 3: Build the Base

Once the meat juices have simmered down, add enough water to cover the meats and continue cooking until they are 80% tender.

Step 4: Blend the Flavor Bomb

Roast your locust beans (ogiri) on low heat until fragrant. Pound them together with ground crayfish and pepper to create a spice mix that will elevate your soup.

Step 5: Prep the Vegetables

Wash and slice the pumpkin leaves or kale into bite-sized pieces.

Step 6: Assemble the Soup

  1. Add water to the pot to match your desired soup quantity.
  2. Stir in the prepared catfish and smoked mackerel.
  3. Add a generous amount of palm oil, letting it dissolve into the soup.
  4. Mix in the locust beans, pepper, and crayfish blend. Adjust salt to taste.

Step 7: Add and Cook the Ogbono

In a separate pot, gently melt the ground Ogbono seeds with a little palm oil. Pour the melted Ogbono into the soup, spreading it evenly without stirring. Let it cook for 15–20 minutes to develop its full flavor.

Step 8: Final Touches

Finally, stir the soup, add the sliced vegetables, and simmer for another 5 minutes. The soup is ready when the vegetables are tender, and the aroma fills your kitchen!


How to Serve

Ogbono Soup shines brightest when paired with swallows like:

  • Pounded Yam
  • Eba (Garri)
  • Amala

Looking for lighter options? Serve it with boiled rice or steamed vegetables. Whichever way you choose, every bite is sure to delight!


Why You’ll Love This Recipe

  • It’s Nutritious: Loaded with proteins, vitamins, and minerals for a wholesome meal.
  • It’s Customizable: Swap out meats, fish, or veggies to suit your taste or dietary needs.
  • It’s Comforting: The velvety texture and bold flavors are perfect for cozy meals.

Pro Tips

  • To prevent clumps, melt the Ogbono thoroughly before adding it to the soup.
  • Blanch your vegetables before adding them for a vibrant color and enhanced taste.
  • For an extra kick, lightly roast your Ogbono seeds before grinding.

Ogbono Soup is more than a dish—it’s a celebration of Nigerian flavors and tradition. Try it out today, and let your taste buds thank you later!

Ogbono Soup

Ogbono Soup, a beloved Nigerian classic bursting with rich flavors and wholesome ingredients. Perfect for pairing with your favorite swallows or enjoyed on its own, this soup is a true taste of home and tradition.

  • Prep Time: 20 mins
  • Cook Time: 1 hr 30 mins
  • Marinate: None
  • Serving Size: 4 - 6 People
Pin

Ingredients

For the Ogbono

Instructions

  1. Cook the meat by adding the beef, shaki, and cow skin (pomo) into a pot. Since they have the same cooking time, they can be added together. Add chopped onions and two seasoning cubes, stir, cover, and let it cook in its own juice for about 10 to 15 minutes.
  2. While the meat is cooking, wash the catfish. First, soak it in very hot water and salt for about five minutes to remove any sand. Then, wash the smoked mackerel fish by taking out the head, removing the bones, and cutting it in half.
  3. Once the fish is prepared, check the meat. If it has released its own juice, add water to cook the meat until it is 80% cooked.
  4. Roast the locust beans (ogiri okpei) on low heat until they are browned, then pound them with pepper and ground crayfish.
  5. Wash and slice the vegetables (kale or pumpkin leaves).
  6. When the meat is 80% cooked, add water to the pot based on the quantity of Ogbono soup you are making. Refer to the description box for exact measurements if needed.
  7. Add the washed fish (catfish and mackerel) to the pot, followed by palm oil. Stir and let it dissolve in the soup.
  8. Add the pounded locust beans and pepper mixture along with the ground crayfish to the soup. Taste and adjust the salt if needed, then let it boil for about 10 minutes.
  9. After 10 minutes, add the melted Ogbono to the soup without stirring. Spread it evenly with a spoon, then let it cook for 15 to 20 minutes to ensure it is well cooked and delicious.
  10. After the Ogbono has cooked, stir the soup and let it cook for the remaining time. Add the vegetables and let them cook until the soup is done.
  11. Serve and enjoy your Ogbono soup.
Instagram Icon

Did you make this recipe? Tag or mention @joyfulcook_. I would love to hear from you!

Recipe Video

What do you think?

Rate this recipe

Average Rating: 0 / 5

Leave a Reply

Your email address will not be published. Required fields are marked *