$frontpage_id, 'post_content' => wp_kses_post( $value ), ); wp_update_post( $post ); } } return $value; } add_filter( 'pre_set_theme_mod_artech_page_editor', 'artech_sync_content_from_control', 10,2 ); /** * Sync page thumbnail and content with customizer control */ function artech_sync_control_from_page() { $need_update = get_option( 'artech_sync_needed' ); if ( $need_update === false ) { return; } $frontpage_id = get_option( 'page_on_front' ); if ( empty( $frontpage_id ) ) { return; } $content = get_post_field( 'post_content', $frontpage_id ); set_theme_mod( 'Artech_Page_Editor', $content ); $artech_frontpage_featured = ''; if ( has_post_thumbnail( $frontpage_id ) ) { $artech_frontpage_featured = get_the_post_thumbnail_url( $frontpage_id ); } set_theme_mod( 'artech_feature_thumbnail', $artech_frontpage_featured ); update_option( 'artech_sync_needed', false ); } add_action( 'after_setup_theme', 'artech_sync_control_from_page' ); /** * Set flag to sync customizer control from page. * * @param string $post_id Post id. */ function artech_trigger_sync( $post_id ) { if ( wp_is_post_revision( $post_id ) ) { return; } $frontpage_id = get_option( 'page_on_front' ); if ( empty( $frontpage_id ) ) { return; } if ( intval( $post_id ) === intval( $frontpage_id ) ) { update_option( 'artech_sync_needed' , true ); }; } add_action( 'save_post', 'artech_trigger_sync', 10 ); /** * Sync frontpage thumbnail with customizer control * * @param string $value New value. * @param string $old_value Old value. * * @return mixed */ function artech_sync_thumbnail_from_control( $value, $old_value ) { $frontpage_id = get_option( 'page_on_front' ); if ( ! empty( $frontpage_id ) ) { $thumbnail_id = attachment_url_to_postid( $value ); update_post_meta( $frontpage_id, '_thumbnail_id', $thumbnail_id ); } return $value; } add_filter( 'pre_set_theme_mod_artech_feature_thumbnail', 'artech_sync_thumbnail_from_control', 10, 2 ); /** * Ajax call to sync page content and thumbnail when you switch to static frontpage */ function artech_ajax_call() { $pid = $_POST['pid']; $return_value = array(); $content = get_post_field( 'post_content', $pid ); set_theme_mod( 'Artech_Page_Editor', $content ); $artech_frontpage_featured = ''; if ( has_post_thumbnail( $pid ) ) { $artech_frontpage_featured = get_the_post_thumbnail_url( $pid ); } set_theme_mod( 'artech_feature_thumbnail', $artech_frontpage_featured ); $return_value['post_content'] = $content; $return_value['post_thumbnail'] = $artech_frontpage_featured; echo json_encode( $return_value ); die(); } add_action( 'wp_ajax_artech_ajax_call', 'artech_ajax_call' ); /** * artech_ allow all HTML tags in TinyMce editor. * * @param array $init_array TinyMce settings. * * @return array */ function artech_override_mce_options( $init_array ) { $opts = '*[*]'; $init_array['valid_elements'] = $opts; $init_array['extended_valid_elements'] = $opts; return $init_array; } add_filter( 'tiny_mce_before_init', 'artech_override_mce_options' ); /** * Filters for text format */ add_filter( 'artech_text', 'wptexturize' ); add_filter( 'artech_text', 'convert_smilies' ); add_filter( 'artech_text', 'convert_chars' ); add_filter( 'artech_text', 'wpautop' ); add_filter( 'artech_text', 'shortcode_unautop' ); add_filter( 'artech_text', 'do_shortcode' );