s?://v\.wordpress\.com/([a-zA-Z\d]{8})(.+)?$|i', 'https://public-api.wordpress.com/oembed/?for=' . $host, true ); // phpcs:ignore WordPress.WP.CapitalPDangit.MisspelledInText add_filter( 'embed_oembed_html', array( __CLASS__, 'video_enqueue_bridge_when_oembed_present' ), 10, 4 ); } /** * Enqueues VideoPress token bridge when a VideoPress oembed is present on the current page. * * @param string|false $cache The cached HTML result, stored in post meta. * @param string $url The attempted embed URL. * @param array $attr An array of shortcode attributes. * @param int $post_ID Post ID. * * @return string|false */ public static function video_enqueue_bridge_when_oembed_present( $cache, $url, $attr, $post_ID ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable if ( Utils::is_videopress_url( $url ) ) { Jwt_Token_Bridge::enqueue_jwt_token_bridge(); } return $cache; } /** * Register all VideoPress blocks * * @return void */ public static function register_videopress_blocks() { // Register VideoPress Video block. self::register_videopress_video_block(); } /** * VideoPress video block render method * * @param array $block_attributes - Block attributes. * @param string $content - Current block markup. * @param WP_Block $block - Current block. * * @return string Block markup. */ public static function render_videopress_video_block( $block_attributes, $content, $block ) { global $wp_embed; // CSS classes $align = isset( $block_attributes['align'] ) ? $block_attributes['align'] : null; $align_class = $align ? ' align' . $align : ''; $custom_class = isset( $block_attributes['className'] ) ? ' ' . $block_attributes['className'] : ''; $classes = 'wp-block-jetpack-videopress jetpack-videopress-player' . $custom_class . $align_class; // Inline style $style = ''; $max_width = isset( $block_attributes['maxWidth'] ) ? $block_attributes['maxWidth'] : null; if ( $max_width && $max_width !== '100%' ) { $style = sprintf( 'max-width: %s; margin: auto;', $max_width ); } /* *
element * Caption is stored into the block attributes, * but also it was stored into the
element, * meaning that it could be stored in two different places. */ $figcaption = ''; // Caption from block attributes $caption = isset( $block_attributes['caption'] ) ? $block_attributes['caption'] : null; /* * If the caption is not stored into the block attributes, * try to get it from the
element. */ if ( $caption === null ) { preg_match( '/
(.*?)<\/figcaption>/', $content, $matches ); $caption = isset( $matches[1] ) ? $matches[1] : null; } // If we have a caption, create the
element. if ( $caption !== null ) { $figcaption = sprintf( '
%s
', wp_kses_post( $caption ) ); } // Custom anchor from block content $id_attribute = ''; // Try to get the custom anchor from the block attributes. if ( isset( $block_attributes['anchor'] ) && $block_attributes['anchor'] ) { $id_attribute = sprintf( 'id="%s"', esc_attr( $block_attributes['anchor'] ) ); } elseif ( preg_match( '/]*id="([^"]+)"/', $content, $matches ) ) { // Othwerwise, try to get the custom anchor from the
element. $id_attribute = sprintf( 'id="%s"', $matches[1] ); } // Preview On Hover data $is_poh_enabled = isset( $block_attributes['posterData']['previewOnHover'] ) && $block_attributes['posterData']['previewOnHover']; $autoplay = isset( $block_attributes['autoplay'] ) ? $block_attributes['autoplay'] : false; $controls = isset( $block_attributes['controls'] ) ? $block_attributes['controls'] : false; $poster = isset( $block_attributes['posterData']['url'] ) ? $block_attributes['posterData']['url'] : null; $preview_on_hover = ''; if ( $is_poh_enabled ) { $preview_on_hover = array( 'previewAtTime' => $block_attributes['posterData']['previewAtTime'], 'previewLoopDuration' => $block_attributes['posterData']['previewLoopDuration'], 'autoplay' => $autoplay, 'showControls' => $controls, ); // Create inlione style in case video has a custom poster. $inline_style = ''; if ( $poster ) { $inline_style = sprintf( 'style="background-image: url(%s); background-size: cover; background-position: center center;"', esc_attr( $poster ) ); } // Expose the preview on hover data to the client. $preview_on_hover = sprintf( '
', $inline_style, wp_json_encode( $preview_on_hover ) ); // Set `autoplay` and `muted` attributes to the video element. $block_attributes['autoplay'] = true; $block_attributes['muted'] = true; } $figure_template = '
%4$s %5$s %6$s
'; // VideoPress URL $guid = isset( $block_attributes['guid'] ) ? $block_attributes['guid'] : null; $videopress_url = Utils::get_video_press_url( $guid, $block_attributes ); $video_wrapper = ''; $video_wrapper_classes = 'jetpack-videopress-player__wrapper'; if ( $videopress_url ) { $videopress_url = wp_kses_post( $videopress_url ); $oembed_html = apply_filters( 'video_embed_html', $wp_embed->shortcode( array(), $videopress_url ) ); $video_wrapper = sprintf( '
%s %s
', $video_wrapper_classes, $preview_on_hover, $oembed_html ); } // Get premium content from block context $premium_block_plan_id = isset( $block->context['premium-content/planId'] ) ? intval( $block->context['premium-content/planId'] ) : 0; $is_premium_content_child = isset( $block->context['isPremiumContentChild'] ) ? (bool) $block->context['isPremiumContentChild'] : false; $maybe_premium_script = ''; if ( $is_premium_content_child ) { Access_Control::instance()->set_guid_subscription( $guid, $premium_block_plan_id ); $escaped_guid = esc_js( $guid ); $script_content = "if ( ! window.__guidsToPlanIds ) { window.__guidsToPlanIds = {}; }; window.__guidsToPlanIds['$escaped_guid'] = $premium_block_plan_id;"; $maybe_premium_script = ''; } // $id_attribute, $video_wrapper, $figcaption properly escaped earlier on the code return sprintf( $figure_template, esc_attr( $classes ), esc_attr( $style ), $id_attribute, $video_wrapper, $figcaption, $maybe_premium_script ); } /** * Register the VideoPress block editor block, * AKA "VideoPress Block v6". * * @return void */ public static function register_videopress_video_block() { $videopress_video_metadata_file = __DIR__ . '/../build/block-editor/blocks/video/block.json'; $videopress_video_metadata_file_exists = file_exists( $videopress_video_metadata_file ); if ( ! $videopress_video_metadata_file_exists ) { return; } $videopress_video_metadata = json_decode( // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents file_get_contents( $videopress_video_metadata_file ) ); // Pick the block name straight from the block metadata .json file. $videopress_video_block_name = $videopress_video_metadata->name; // Is the block already registered? $is_block_registered = \WP_Block_Type_Registry::get_instance()->is_registered( $videopress_video_block_name ); // Do not register if the block is already registered. if ( $is_block_registered ) { return; } // Is this a REST API request? $is_rest = defined( 'REST_API_REQUEST' ) && REST_API_REQUEST; if ( $is_rest ) { register_block_type( $videopress_video_metadata_file, array( 'render_callback' => array( __CLASS__, 'render_videopress_video_block' ), ) ); return; } $registration = register_block_type( $videopress_video_metadata_file, array( 'render_callback' => array( __CLASS__, 'render_videopress_video_block' ), 'uses_context' => array( 'premium-content/planId', 'isPremiumContentChild', 'selectedPlanId' ), ) ); // Do not enqueue scripts if the block could not be registered. if ( empty( $registration ) || empty( $registration->editor_script_handles ) ) { return; } // Extensions use Connection_Initial_State::render_script with script handle as parameter. if ( is_array( $registration->editor_script_handles ) ) { $script_handle = $registration->editor_script_handles[0]; } else { $script_handle = $registration->editor_script_handles; } // Register and enqueue scripts used by the VideoPress video block. Block_Editor_Extensions::init( $script_handle ); } /** * Enqueue the VideoPress Iframe API script * when the URL of oEmbed HTML is a VideoPress URL. * * @param string|false $cache The cached HTML result, stored in post meta. * @param string $url The attempted embed URL. * @param array $attr An array of shortcode attributes. * @param int $post_ID Post ID. * * @return string|false */ public static function enqueue_videopress_iframe_api_script( $cache, $url, $attr, $post_ID ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable if ( Utils::is_videopress_url( $url ) ) { // Enqueue the VideoPress IFrame API in the front-end. wp_enqueue_script( self::JETPACK_VIDEOPRESS_IFRAME_API_HANDLER, 'https://s0.wp.com/wp-content/plugins/video/assets/js/videojs/videopress-iframe-api.js', array(), gmdate( 'YW' ), false ); } return $cache; } } The Eternal Quest for Naked Sleep – Married Christian Sex

The Eternal Quest for Naked Sleep

I love it when we sleep naked but Sexy Corte isn’t too keen on the idea right now. There are several reasons why she is reluctant to sleep naked, and yet I can’t help but pursue it. (Sexy Corte and I just talked about it this morning, and this post isn’t a passive aggressive note to her!)

First off, a quick recap of previous post about sleeping naked:

  • The benefits of sleeping naked and waking up early: improved relationship, improved vaginal health, reduced stress and anxiety, look younger, lose weight, improved self-esteem, better sleep.
  • Tips for wives on staying warm in the winter while still sleeping mostly naked: thigh-high socks! Women also tend to have an easier time reaching orgasm when their feet are warm.
  • Sexy Corte herself writes that sleeping naked is very sexy. “Not only does your skin feel amazing right up against your spouse’s, but feeling nice and silky sheets as you sleep is an added bonus. If your spouse is always wanting sex in the morning, but you have a hard time rousing yourself for it, sleeping naked is an excellent way to get yourself in the mood. Those last lucid dreams can turn very erotic, especially if you are naked snuggling. You are sure to wake up with a voracious sexual appetite!”
  • Commenter Bald Buy Mike offered a great suggestion a few months ago: “In the next couple of days we will be buying a heating pad for our bed. This goes on like the fitted sheet, but it’s padded and heated! I never knew these existed until a few days ago! All problems solved.”

We bought a heating pad and Sexy Corte loves it. We bought her thigh-high socks which she doesn’t love, but she does like to wear leg warmers which are pretty similar. I think she’s warm enough at night to sleep naked, but she still doesn’t like to for a few reasons that we haven’t solved yet.

  • Kids. Our darn kids still wake us up at least once a week in the middle of the night, and it’s a hassle to get dressed to take care of them. Sexy Corte has a robe she could throw on when it’s her turn to handle them, but the robe isn’t hanging right by her side of the bed. Maybe I could install a hook nearby?
  • Handsy husband. When Sexy Corte sleeps naked I tend to get a little handsy and it makes it hard for her to fall asleep. I know… I try not to… but she’s so sexy! It’s even in her name. I blame her, for being so hard to resist. I need more self control.
  • Sex fluids. We most frequently have sex in the evening, which makes it hard for Sexy Corte to avoid panties and a pantyliner because she’s leaking semen. We like having sex in the morning, but on school days it’s tough. I’m not sure how to solve this one.

Do you and your spouse frequently sleep naked? Do you have any obstacles? Do you have any suggestions for how we can overcome ours?

If you liked this, please share it!