/** * Removes the WPSEO metabox from product listing edit screen * The title and description is managed from WPSEO settings */ function product_listing_remove_wpseo() { $id = get_product_listing_id(); if (is_admin() && isset($_GET['post']) && $_GET['post'] == $id) { remove_meta_box('wpseo_meta', 'page', 'normal'); } }
/** * Manages admin only functions * * @version 1.0.0 * @package ecommerce-product-catalog/functions * @author Norbert Dreszer */ function toolbar_link_to_products_archive_edit($wp_admin_bar) { $listing_id = get_product_listing_id(); if (is_post_type_archive('al_product')) { $args = array('id' => 'edit', 'title' => 'Edit Product Listing', 'href' => admin_url('post.php?post=' . $listing_id . '&action=edit'), 'meta' => array('class' => 'edit-products-page')); $wp_admin_bar->add_node($args); } }
/** * Checks if current page is main product listing * * @return boolean */ function is_ic_product_listing() { $listing_id = get_product_listing_id(); if (is_post_type_archive(product_post_type_array()) || is_home_archive() || is_ic_product_listing_enabled() && is_page($listing_id)) { return true; } return false; }
/** * Enables permalink rewrite when editing the product listing page * * @param type $post_id * @param type $post * @return type */ function ic_rewrite_product_listing_change($post_id, $post) { if (isset($post->post_type) && $post->post_type == 'page') { $id = get_product_listing_id(); if ($post_id == $id) { permalink_options_update(); } } return; }
/** * Redirects the product listing page to archive page on non permalink configuration * */ function redirect_listing_on_non_permalink() { if (!is_ic_permalink_product_catalog()) { $product_listing_id = get_product_listing_id(); if (is_ic_product_listing_enabled() && is_page($product_listing_id)) { $url = product_listing_url(); wp_redirect($url, 301); exit; } } }
function al_product_adder_page_template($template) { if (is_ic_catalog_page()) { if (is_archive() || is_search() || is_tax()) { $product_archive = get_product_listing_id(); if (!empty($product_archive)) { wp_redirect(get_permalink($product_archive)); exit; } } else { return get_page_php_path(); } } return $template; }
/** * Adds products post type navigation class for automatic main menu * * @global type $post * @param string $classes * @param type $page * @return string */ function product_listing_page_nav_class($classes, $page) { global $post; if (isset($post->ID) && is_ic_product_listing()) { if ($page->ID == get_product_listing_id()) { $current_post_type = get_post_type_object(get_post_type($post->ID)); $current_post_type_slug = $current_post_type->rewrite['slug']; $menu_slug = $page->post_name; if ($menu_slug == $current_post_type_slug) { $classes[] = 'current_page_item'; } } else { if (($key = array_search('current-menu-item', $classes)) !== false) { unset($classes[$key]); } if (($key = array_search('current_page_parent', $classes)) !== false) { unset($classes[$key]); } } } else { if (isset($post->ID) && (is_ic_product_page() || is_ic_taxonomy_page())) { if (($key = array_search('current-menu-item', $classes)) !== false) { unset($classes[$key]); } if (($key = array_search('current_page_parent', $classes)) !== false) { unset($classes[$key]); } } } return $classes; }
function get_product_slug() { $page_id = get_product_listing_id(); $slug = untrailingslashit(get_page_uri($page_id)); if (empty($slug)) { $slug = __('products', 'al-ecommerce-product-catalog'); } return apply_filters('product_slug', $slug); }
function is_product_listing_home_set() { $frontpage = get_option('page_on_front'); $product_listing_id = get_product_listing_id(); if (!empty($frontpage) && !empty($product_listing_id) && $frontpage == $product_listing_id) { return true; } return false; }
function product_archive_title($title = null, $sep = null, $seplocation = null) { global $post; if (is_ic_product_listing() && is_object($post) && $post->post_type == 'al_product') { $settings = get_multiple_settings(); if ($settings['seo_title'] == '') { $id = get_product_listing_id(); if (!empty($id)) { $title = get_single_post_title($id, $sep, $seplocation); } } } return $title; }
function product_listing_current_nav_class($classes, $item) { global $post; if (isset($post->ID) && $item->object_id == get_product_listing_id() && is_post_type_archive('al_product')) { $current_post_type = get_post_type_object(get_post_type($post->ID)); $current_post_type_slug = $current_post_type->rewrite['slug']; $current_post_type_slug = !empty($current_post_type_slug) ? '/' . $current_post_type_slug . '/' : $current_post_type_slug; $menu_slug = strtolower(trim($item->url)); if (strpos($menu_slug, $current_post_type_slug) !== false) { $classes[] = 'current-menu-item'; } } return $classes; }
function get_product_slug() { $page_id = get_product_listing_id(); $slug = urldecode(untrailingslashit(get_page_uri($page_id))); if (empty($slug)) { $settings = get_multiple_settings(); $slug = ic_lcfirst($settings['catalog_plural']); } return apply_filters('product_slug', $slug); }
function general_settings_content() { ?> <?php $submenu = isset($_GET['submenu']) ? $_GET['submenu'] : ''; ?> <div class="overall-product-settings settings-wrapper" style="clear:both;"> <div class="settings-submenu"> <h3> <a id="general-settings" class="element current" href="<?php echo admin_url('edit.php?post_type=al_product&page=product-settings.php&tab=product-settings&submenu=general-settings'); ?> "><?php _e('General Settings', 'al-ecommerce-product-catalog'); ?> </a> <?php do_action('general_submenu'); ?> </h3> </div> <?php if ($submenu == 'general-settings' or $submenu == '') { ?> <div class="setting-content submenu"> <script> jQuery('.settings-submenu a').removeClass('current'); jQuery('.settings-submenu a#general-settings').addClass('current'); </script> <h2><?php _e('General Settings', 'al-ecommerce-product-catalog'); ?> </h2> <form method="post" action="options.php"> <?php settings_fields('product_settings'); $product_currency = get_option('product_currency', DEF_CURRENCY); $product_currency_settings = get_currency_settings(); $enable_product_listing = get_option('enable_product_listing', 1); $product_listing_url = get_option('product_listing_url', __('products', 'al-ecommerce-product-catalog')); $product_archive = get_product_listing_id(); $archive_multiple_settings = get_multiple_settings(); $page_get = get_page_by_path($product_listing_url); if ($product_archive != '') { $new_product_listing_url = get_page_uri($product_archive); if ($new_product_listing_url != '') { update_option('product_listing_url', $new_product_listing_url); } else { update_option('product_listing_url', __('products', 'al-ecommerce-product-catalog')); } } else { if (!empty($page_get->ID)) { update_option('product_archive', $page_get->ID); $product_archive = get_option('product_archive'); } } $disabled = ''; if (!is_advanced_mode_forced()) { ?> <h3><?php _e('Theme Integration', 'al-ecommerce-product-catalog'); ?> </h3><?php if (get_integration_type() == 'simple') { $disabled = 'disabled'; implecode_warning('<p>' . __('The simple mode allows to use eCommerce Product Catalog most features. You can build the product listing pages and category pages by using a [show_products] shortcode. Simple mode uses your theme page layout so it can show unwanted elements on product page. If it does please switch to Advanced Mode and see if it works out of the box.', 'al-ecommerce-product-catalog') . '</p><p>' . __('Switching to Advanced Mode also gives additional features: automatic product listing, category pages, product search and category widget. Building a product catalog in Advanced Mode will be less time consuming as you don’t need to use a shortcode for everything.', 'al-ecommerce-product-catalog') . '</p>'); } ?> <table> <?php implecode_settings_radio(__('Choose theme integration type', 'al-ecommerce-product-catalog'), 'archive_multiple_settings[integration_type]', $archive_multiple_settings['integration_type'], array('simple' => __('Simple Integration<br>', 'al-ecommerce-product-catalog'), 'advanced' => __('Advanced Integration', 'al-ecommerce-product-catalog'))); ?> </table> <?php } ?> <h3><?php _e('Product Catalog', 'al-ecommerce-product-catalog'); ?> </h3> <table><?php implecode_settings_text(__('Catalog Singular Name', 'al-ecommerce-product-catalog'), 'archive_multiple_settings[catalog_singular]', $archive_multiple_settings['catalog_singular'], null, 1, null, __('Admin panel customisation setting. Change it to what you sell.', 'al-ecommerce-product-catalog')); implecode_settings_text(__('Catalog Plural Name', 'al-ecommerce-product-catalog'), 'archive_multiple_settings[catalog_plural]', $archive_multiple_settings['catalog_plural'], null, 1, null, __('Admin panel customisation setting. Change it to what you sell.', 'al-ecommerce-product-catalog')); ?> </table> <h3><?php _e('Product listing page', 'al-ecommerce-product-catalog'); ?> </h3><?php if ($disabled == 'simple') { implecode_warning(sprintf(__('Product listing page is disabled with simple theme integration. See <a href="%s">Theme Integration Guide</a> to enable product listing page with pagination or use [show_products] shortcode on the page selected below.', 'al-ecommerce-product-catalog'), 'http://implecode.com/wordpress/product-catalog/theme-integration-guide/#cam=simple-mode&key=product-listing')); } ?> <table> <tr> <td style="width: 180px"> <?php _e('Enable Product Listing Page', 'al-ecommerce-product-catalog'); ?> : </td> <td> <input <?php echo $disabled; ?> title="<?php _e('Disable and use [show_products] shortcode to display the products.', 'al-ecommerce-product-catalog'); ?> " type="checkbox" name="enable_product_listing" value="1"<?php checked(1, $enable_product_listing); ?> /> </td> </tr> <tr> <td> <?php _e('Choose Product Listing Page', 'al-ecommerce-product-catalog'); ?> : </td> <td><?php if ($enable_product_listing == 1) { $listing_url = product_listing_url(); select_page('product_archive', __('Default', 'al-ecommerce-product-catalog'), $product_archive, true, $listing_url); } else { select_page('product_archive', __('Default', 'al-ecommerce-product-catalog'), $product_archive, true); } ?> </td> </tr> <?php /* <tr> <td><?php _e('Product listing URL', 'al-ecommerce-product-catalog'); ?>:</td> <td class="archive-url-td"><a target="_blank" class="archive-url" href="<?php echo product_listing_url() ?>"><?php $listin_url = product_listing_url(); $listin_urllen = strlen($listin_url); if ($listin_urllen > 40) { $listin_url = substr($listin_url, 0, 20).'...'.substr($listin_url, $listin_urllen - 20, $listin_urllen); } echo $listin_url; ?></a></td> </tr> */ ?> <tr> <td><?php _e('Product listing shows at most', 'al-ecommerce-product-catalog'); ?> </td> <td><input <?php echo $disabled; ?> title="<?php _e('You can also use shortcode with products_limit attribute to set this.', 'al-ecommerce-product-catalog'); ?> " size="30" class="number-box" type="number" step="1" min="0" name="archive_multiple_settings[archive_products_limit]" id="archive_products_limit" value="<?php echo $archive_multiple_settings['archive_products_limit']; ?> "/> <?php _e('products', 'al-ecommerce-product-catalog'); ?> . </td> </tr><?php implecode_settings_radio(__('Product listing shows', 'al-ecommerce-product-catalog'), 'archive_multiple_settings[product_listing_cats]', $archive_multiple_settings['product_listing_cats'], array('off' => __('Products<br>', 'al-ecommerce-product-catalog'), 'on' => __('Products & Main Categories', 'al-ecommerce-product-catalog'))); $sort_options = get_product_sort_options(); implecode_settings_radio(__('Product order', 'al-ecommerce-product-catalog'), 'archive_multiple_settings[product_order]', $archive_multiple_settings['product_order'], $sort_options, true, __('This is also the default setting for sorting drop-down.', 'al-ecommerce-product-catalog')); do_action('product_listing_page_settings'); ?> </table><?php //implecode_info(__('You can also use shortcode to show your products whenever you want on the website. Just paste on any page: [show_products] and you will display all products in place of the shortcode. <br><br>To show products from just one category, use: [show_products category="2"] where 2 is category ID (you can display several categories by inserting comma separated IDs). <br><br>To display products by IDs, use: [show_products product="5"], where 5 is product ID.', 'al-ecommerce-product-catalog')); ?> <h3><?php _e('Categories Settings', 'al-ecommerce-product-catalog'); ?> </h3><?php if ($disabled != '') { implecode_warning(sprintf(__('Category pages are disabled with simple theme integration. See <a href="%s">Theme Integration Guide</a> to enable category pages or use [show_products category="1"] (where "1" is category ID) on any page to show products from certain category.', 'al-ecommerce-product-catalog'), 'http://implecode.com/wordpress/product-catalog/theme-integration-guide/#cam=simple-mode&key=categories-settings')); } ?> <table> <tr> <td><?php _e('Categories Parent URL', 'al-ecommerce-product-catalog'); ?> :</td> <?php $site_url = site_url(); $urllen = strlen($site_url); if ($urllen > 25) { $site_url = substr($site_url, 0, 11) . '...' . substr($site_url, $urllen - 11, $urllen); } ?> <td class="longer"><?php echo $site_url; ?> /<input <?php echo $disabled; ?> type="text" name="archive_multiple_settings[category_archive_url]" title="<?php _e('Cannot be the same as product listing page slug.', 'al-ecommerce-product-catalog'); ?> " id="category_archive_url" value="<?php echo sanitize_title($archive_multiple_settings['category_archive_url']); ?> "/>/<?php _e('category-name', 'al-ecommerce-product-catalog'); ?> / </td> </tr><?php implecode_settings_radio(__('Category Page shows', 'al-ecommerce-product-catalog'), 'archive_multiple_settings[category_top_cats]', $archive_multiple_settings['category_top_cats'], array('off' => __('Products<br>', 'al-ecommerce-product-catalog'), 'on' => __('Products & Subcategories', 'al-ecommerce-product-catalog'))); implecode_settings_radio(__('Categories Display', 'al-ecommerce-product-catalog'), 'archive_multiple_settings[cat_template]', $archive_multiple_settings['cat_template'], array('template' => __('Template<br>', 'al-ecommerce-product-catalog'), 'link' => __('URLs', 'al-ecommerce-product-catalog')), true, array('template' => __('Display categories with the same listing theme as products.', 'al-ecommerce-product-catalog'), 'link' => __('Display categories as simple links.', 'al-ecommerce-product-catalog'))); do_action('product_category_settings', $archive_multiple_settings); ?> </table> <h3><?php _e('SEO Settings', 'al-ecommerce-product-catalog'); ?> </h3><?php if ($disabled != '') { implecode_warning(sprintf(__('SEO settings are disabled with simple theme integration. See <a href="%s">Theme Integration Guide</a> to enable SEO settings.', 'al-ecommerce-product-catalog'), 'http://implecode.com/wordpress/product-catalog/theme-integration-guide/#cam=simple-mode&key=seo-settings')); } ?> <table> <?php implecode_settings_text(__('Archive SEO Title', 'al-ecommerce-product-catalog'), 'archive_multiple_settings[seo_title]', $archive_multiple_settings['seo_title']); implecode_settings_checkbox(__('Enable SEO title separator', 'al-ecommerce-product-catalog'), 'archive_multiple_settings[seo_title_sep]', $archive_multiple_settings['seo_title_sep']); ?> </table> <h3><?php _e('Breadcrumbs Settings', 'al-ecommerce-product-catalog'); ?> </h3><?php if ($disabled != '') { implecode_warning(sprintf(__('Breadcrumbs are disabled with simple theme integration. See <a href="%s">Theme Integration Guide</a> to enable product breadcrumbs.', 'al-ecommerce-product-catalog'), 'http://implecode.com/wordpress/product-catalog/theme-integration-guide/#cam=simple-mode&key=breadcrumbs-settings')); } ?> <table> <tr> <td><?php _e('Enable Product Breadcrumbs:', 'al-ecommerce-product-catalog'); ?> </td> <td><input <?php echo $disabled; ?> type="checkbox" name="archive_multiple_settings[enable_product_breadcrumbs]" value="1"<?php checked(1, isset($archive_multiple_settings['enable_product_breadcrumbs']) ? $archive_multiple_settings['enable_product_breadcrumbs'] : ''); ?> /> </td> </tr> <tr> <td><?php _e('Product listing breadcrumbs title:', 'al-ecommerce-product-catalog'); ?> </td> <td><input <?php echo $disabled; ?> type="text" name="archive_multiple_settings[breadcrumbs_title]" id="breadcrumbs_title" value="<?php echo $archive_multiple_settings['breadcrumbs_title']; ?> "/> </td> </tr> </table> <h3><?php _e('Payment and currency', 'al-ecommerce-product-catalog'); ?> </h3> <table id="payment_table"> <thead> <?php implecode_settings_radio(__('Price', 'al-ecommerce-product-catalog'), 'product_currency_settings[price_enable]', $product_currency_settings['price_enable'], array('on' => __('On<br>', 'al-ecommerce-product-catalog'), 'off' => __('Off', 'al-ecommerce-product-catalog'))); ?> </thead> <tbody><?php do_action('payment_settings_table_start'); ?> <tr> <td><?php _e('Your currency', 'al-ecommerce-product-catalog'); ?> :</td> <td><select id="product_currency" name="product_currency"> <?php $currencies = available_currencies(); foreach ($currencies as $currency) { ?> <option name="product_currency[<?php echo $currency; ?> ]" value="<?php echo $currency; ?> "<?php selected($currency, $product_currency); ?> ><?php echo $currency; ?> </option> <?php } ?> </select></td> <td rowspan="4"> <div class="al-box info"><?php _e('If you choose custom currency symbol, it will override "Your Currency" setting. This is very handy if you want to use not supported currency or a preferred symbol for your currency.', 'al-ecommerce-product-catalog'); ?> </div> </td> </tr> <tr> <td><?php _e('Custom Currency Symbol', 'al-ecommerce-product-catalog'); ?> :</td> <td><input type="text" name="product_currency_settings[custom_symbol]" class="small_text_box" id="product_currency_settings" value="<?php echo $product_currency_settings['custom_symbol']; ?> "/></td> </tr> <?php implecode_settings_radio(__('Currency position', 'al-ecommerce-product-catalog'), 'product_currency_settings[price_format]', $product_currency_settings['price_format'], array('before' => __('Before Price<br>', 'al-ecommerce-product-catalog'), 'after' => __('After Price', 'al-ecommerce-product-catalog'))); implecode_settings_radio(__('Space between currency & price', 'al-ecommerce-product-catalog'), 'product_currency_settings[price_space]', $product_currency_settings['price_space'], array('on' => __('On<br>', 'al-ecommerce-product-catalog'), 'off' => __('Off', 'al-ecommerce-product-catalog'))); implecode_settings_text(__('Thousands Separator', 'al-ecommerce-product-catalog'), 'product_currency_settings[th_sep]', $product_currency_settings['th_sep'], null, 1, 'small_text_box'); implecode_settings_text(__('Decimal Separator', 'al-ecommerce-product-catalog'), 'product_currency_settings[dec_sep]', $product_currency_settings['dec_sep'], null, 1, 'small_text_box'); ?> </tbody> </table> <script>jQuery(document).ready(function () { jQuery("input[name=\"product_currency_settings[price_enable]\"]").change(function () { if (jQuery(this).val() == 'off' && jQuery(this).is(':checked')) { jQuery("#payment_table tbody").hide("slow"); } else { jQuery("#payment_table tbody").show("slow"); } }); jQuery("input[name=\"product_currency_settings[price_enable]\"]").trigger("change"); });</script> <h3><?php _e('Additional Settings', 'al-ecommerce-product-catalog'); ?> </h3> <table><?php implecode_settings_checkbox(__('Disable SKU', 'al-ecommerce-product-catalog'), 'archive_multiple_settings[disable_sku]', $archive_multiple_settings['disable_sku']); ?> </table> <?php do_action('general-settings'); ?> <p class="submit"> <input type="submit" class="button-primary" value="<?php _e('Save changes', 'al-ecommerce-product-catalog'); ?> "/> </p> </form> </div> <div class="helpers"> <div class="wrapper"><?php main_helper(); doc_helper(__('shortcode', 'al-ecommerce-product-catalog'), 'product-shortcode'); //did_know_helper('support', __('You can get instant support by email','al-ecommerce-product-catalog'), 'http://implecode.com/wordpress/plugins/premium-support/') ?> </div> </div> <?php } do_action('product-settings'); permalink_options_update(); ?> </div> <?php }