문제

I got a plugin for hiding a product on a particular date (called WooCommerce Limited Deals). This plugin sets the visibility of the product to hidden. What I would like to do is to set the product to Draft because if visibility is hidden, the product still shows up in search results and with direct access. Below you can find the code of the plugin that sets it to 'hidden'. Is it possible to add a line that will also set it to 'draft'?

update_post_meta( $post->ID, '_visibility', 'hidden' );

For example(I know it won't work) something similar to this:

update_post_meta( $post->ID, 'status', 'draft' );

Function (updated)

public function check_single()
{
    global $post;

    if ( $this->is_enabled( $post->id ) && !$this->is_available( $post->id ) ) {

        // Set visibility to hidden
        $hide = get_option( 'tp_hide_expired' );
        if ( $hide == 'yes' ) {
            update_post_meta( $post->ID, '_visibility', 'hidden' );
            wp_update_post( array(
                'ID' => $post->ID,
                    'post_status' => 'draft',
            ) );
        }

        // Remove the add to cart button
        $disable = get_option( 'tp_disable_cart' );
        if ( $disable == 'yes' ) {
            remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
            add_action( 'woocommerce_single_product_summary', array( 'WC_Limited_Deals', 'custom_add_to_cart' ), 30 );
        }
    }
}
도움이 되었습니까?

해결책

Just use wp_update_post.

http://codex.wordpress.org/Function_Reference/wp_update_post

wp_update_post( array(
    'ID' => $post->ID,
    'post_status' => 'draft',
) );
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top