Support » Plugin: Duplicate Post » Polylang Support

  • Ulrich

    (@grapplerulrich)


    Hi! 😀

    You have added WPML support. If you wanted to add Polylang support, you could use the following code:

    function duplicate_post_polylang_init() {
    	if ( function_exists( 'pll_get_post_translations' ) ) {
    		add_action( 'dp_duplicate_page', 'duplicate_post_polylang_copy_translations', 10, 3 );
    		add_action( 'dp_duplicate_post', 'duplicate_post_polylang_copy_translations', 10, 3 );
    	}
    }
    add_action( 'admin_init', 'duplicate_post_polylang_init' );
    
    /**
     * Add support for duplicate posts for Polylang. Duplicate all languages together.
     *
     * @param int     $new_post_id   Post ID of new cloned post.
     * @param WP_Post $original_post WP_Post object of the original post.
     * @param string  $status        Post status of new cloned post.
     */
    function duplicate_post_polylang_copy_translations( $new_post_id, $original_post, $status = '' ) {
    	remove_action( 'dp_duplicate_page', 'duplicate_post_polylang_copy_translations', 10 );
    	remove_action( 'dp_duplicate_post', 'duplicate_post_polylang_copy_translations', 10 );
    
    	$languages = pll_get_post_translations( $original_post->ID );
    	$post_ids  = [];
    	foreach ( $languages as $slug => $post_id ) {
    		// Do not duplicate post again.
    		if ( $original_post->ID === $post_id ) {
    			$post_ids[ $slug ] = $new_post_id;
    			continue;
    		}
    		$post_ids[ $slug ] = duplicate_post_create_duplicate( get_post( $post_id ), $status );
    	}
    	pll_save_post_translations( $post_ids );
    }
Viewing 2 replies - 1 through 2 (of 2 total)
Viewing 2 replies - 1 through 2 (of 2 total)
  • The topic ‘Polylang Support’ is closed to new replies.