/** * Set catalog visibility. * * @since 2.7.0 * @throws WC_Data_Exception * @param string $visibility Options: 'hidden', 'visible', 'search' and 'catalog'. */ public function set_catalog_visibility($visibility) { $options = array_keys(wc_get_product_visibility_options()); if (!in_array($visibility, $options, true)) { $this->error('product_invalid_catalog_visibility', __('Invalid catalog visibility option.', 'woocommerce')); } $this->set_prop('catalog_visibility', $visibility); }
/** * Output product visibility options. */ public function product_data_visibility() { global $post, $thepostid, $product_object; if ('product' !== $post->post_type) { return; } $thepostid = $post->ID; $product_object = $thepostid ? wc_get_product($thepostid) : new WC_Product(); $current_visibility = $product_object->get_catalog_visibility(); $current_featured = wc_bool_to_string($product_object->get_featured()); $visibility_options = wc_get_product_visibility_options(); ?> <div class="misc-pub-section" id="catalog-visibility"> <?php _e('Catalog visibility:', 'woocommerce'); ?> <strong id="catalog-visibility-display"><?php echo isset($visibility_options[$current_visibility]) ? esc_html($visibility_options[$current_visibility]) : esc_html($current_visibility); if ('yes' === $current_featured) { echo ', ' . __('Featured', 'woocommerce'); } ?> </strong> <a href="#catalog-visibility" class="edit-catalog-visibility hide-if-no-js"><?php _e('Edit', 'woocommerce'); ?> </a> <div id="catalog-visibility-select" class="hide-if-js"> <input type="hidden" name="current_visibility" id="current_visibility" value="<?php echo esc_attr($current_visibility); ?> " /> <input type="hidden" name="current_featured" id="current_featured" value="<?php echo esc_attr($current_featured); ?> " /> <?php echo '<p>' . __('Choose where this product should be displayed in your catalog. The product will always be accessible directly.', 'woocommerce') . '</p>'; foreach ($visibility_options as $name => $label) { echo '<input type="radio" name="_visibility" id="_visibility_' . esc_attr($name) . '" value="' . esc_attr($name) . '" ' . checked($current_visibility, $name, false) . ' data-label="' . esc_attr($label) . '" /> <label for="_visibility_' . esc_attr($name) . '" class="selectit">' . esc_html($label) . '</label><br />'; } echo '<p>' . __('Enable this option to feature this product.', 'woocommerce') . '</p>'; echo '<input type="checkbox" name="_featured" id="_featured" ' . checked($current_featured, 'yes', false) . ' /> <label for="_featured">' . __('Featured product', 'woocommerce') . '</label><br />'; ?> <p> <a href="#catalog-visibility" class="save-post-visibility hide-if-no-js button"><?php _e('OK', 'woocommerce'); ?> </a> <a href="#catalog-visibility" class="cancel-post-visibility hide-if-no-js"><?php _e('Cancel', 'woocommerce'); ?> </a> </p> </div> </div> <?php }