Created
December 5, 2023 14:10
-
-
Save everaldomatias/2415ce0277a1b357ad6dba67110e81d9 to your computer and use it in GitHub Desktop.
Migrate image of the post meta to featured image
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace MetaToFeaturedImage; | |
/** | |
* Plugin Name: Meta to featured image | |
* Description: Migrate image of the post meta to featured image | |
* Version: 0.0.1 | |
* Requires at least: 5.8 | |
* Requires PHP: 7.0 | |
* Author: The WordPress Contributors | |
* License: GPL-2.0-or-later | |
* License URI: https://www.gnu.org/licenses/gpl-2.0.html | |
*/ | |
add_action( 'admin_menu', 'MetaToFeaturedImage\\add_admin_menu' ); | |
add_action( 'admin_init', 'MetaToFeaturedImage\\settings_menu' ); | |
function add_admin_menu() { | |
add_options_page( | |
__( 'Meta to featured image', 'meta-to-featured-image' ), | |
__( 'Meta to featured image', 'meta-to-featured-image' ), | |
'manage_options', | |
'meta_featured_image', | |
'MetaToFeaturedImage\\settings_page_render' | |
); | |
} | |
function settings_menu() { | |
register_setting( 'meta_featured_image', 'meta_featured_image_settings' ); | |
add_settings_section( | |
'meta_featured_image_section', | |
__( 'Informações', 'meta-to-featured-image' ), | |
'MetaToFeaturedImage\\settings_section_callback', | |
'meta_featured_image' | |
); | |
add_settings_field( | |
'post_type', | |
__( 'Post type', 'meta-to-featured-image' ), | |
'MetaToFeaturedImage\\settings_post_type_render', | |
'meta_featured_image', | |
'meta_featured_image_section' | |
); | |
add_settings_field( | |
'post_meta', | |
__( 'Post meta', 'meta-to-featured-image' ), | |
'MetaToFeaturedImage\\settings_post_meta_render', | |
'meta_featured_image', | |
'meta_featured_image_section' | |
); | |
} | |
function settings_section_callback() { | |
echo ''; | |
} | |
function settings_post_type_render() { | |
$options = get_option( 'meta_featured_image_settings' ); | |
$value = isset( $options['post_type'] ) ? $options['post_type'] : ''; | |
?> | |
<input type='text' name='meta_featured_image_settings[post_type]' value='<?php echo $value; ?>'> | |
<?php | |
} | |
function settings_post_meta_render() { | |
$options = get_option( 'meta_featured_image_settings' ); | |
$value = isset( $options['post_meta'] ) ? $options['post_meta'] : ''; | |
?> | |
<input type='text' name='meta_featured_image_settings[post_meta]' value='<?php echo $value; ?>'> | |
<?php | |
} | |
/** | |
* Render the settings page | |
*/ | |
function settings_page_render() { | |
if ( isset( $_GET['page'] ) && $_GET['page'] === 'meta_featured_image' ) { | |
if ( isset( $_GET['settings-updated'] ) && $_GET['settings-updated'] === "true" ) { | |
migrate_data(); | |
} | |
} | |
?> | |
<form action='options.php' method='post'> | |
<input type="hidden" name="action" value="meta_featured_image_save"> | |
<?php | |
settings_fields( 'meta_featured_image' ); | |
do_settings_sections( 'meta_featured_image' ); | |
submit_button(); | |
?> | |
</form> | |
<?php | |
} | |
function migrate_data() { | |
$options = get_option( 'meta_featured_image_settings' ); | |
$post_type = isset( $options['post_type'] ) ? $options['post_type'] : ''; | |
$post_meta = isset( $options['post_meta'] ) ? $options['post_meta'] : ''; | |
if ( $post_type && $post_meta ) { | |
$args = [ | |
'post_type' => sanitize_title( $post_type ), | |
'posts_per_page' => -1, | |
'post_status' => 'publish' | |
]; | |
} | |
$get_posts = get_posts( $args ); | |
foreach ( $get_posts as $post ) { | |
$imagem_id = get_post_meta( $post->ID, $post_meta, true ); | |
if ( ! empty( $imagem_id ) ) { | |
$set_post_thumbnail = set_post_thumbnail( $post->ID, $imagem_id ); | |
if ( $set_post_thumbnail ) { | |
do_action( 'logger', ["Meta to featured image => Imagem destacada ($imagem_id), definida com sucesso no post ($post->ID)" ] ); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment