$vџџџџрE v№PtQ*vjтwрp vрPt‡vџџџџџџџџP<)vP`2 vptœ"v€`cЬ3v`€t vptA#vџџџџџџџџџџџџ<Q*vPDˆ@ "p v@P"tA#vџџџџџџџџџџџџ"<Fэuџџџџџџџџџџџџ#> pitY№uitY@%NqYP‡dtY№™MpY№™MpY …єtY№citY@vitYvitYРЖ=nYxя›uYxя›uYP‡dtYbpnYо“tYр)•Yћup­DQ*vшАЗm­p‡vџџџџџџџџ€­<)v€P­2A#vџџџџџџџџџџџџ­<LіuPpџџџџ­ћu€АЎD}!vPPЎBA#vџџџџџџџџџџџџЎ<Lіu`АџџџџЎОv`  Аp‡vџџџџџџџџрА<iхuрџџџџА|œ§uрџџџџџџџџА>[~vџџџџџџџџБ|Fэu џџџџџџџџџџџџБ>РxdtY@ydtY`d˜tY`d˜tYаBitY CitY|‡tY|‡tY№ЙЗmќ€ЂqY0itYРєhtYѕhtYаœ•YРћжtY0†dtY$vџџџџ _E‡vџџџџџџџџ€_<LіuP€џџџџ_$vџџџџ№`E vP`t‡vџџџџџџџџ `<Lіu` џџџџ`е'v`PРa|іupРџџџџa$vџџџџpcEісu€cq‡vџџџџџџџџрc<)vрPc2}!vP`cB}!vppcBA#vџџџџџџџџџџџџc<Fэuрџџџџџџџџџџџџd>JitYPJitYpbƒ JitY№JitY`WƒРJitYPJitYpbƒ JitY№JitY`WƒР0чhtY€чhtYp3zpY№€dtYачhtY шhtYАўpYа,uYА~$nY€htY5itYЈЅrY@Ђ˜tYРнОrYа4itYА~$nYаitYрсhtY0тhtY @CpY§uрtq vPtt‡vџџџџџџџџPt< vPџџџџ`tVv`@џџџџt+$vџџџџvE v Pvt v`vtA#vџџџџџџџџџџџџv<$vџџџџ`xE vpPxt v``xt vPpxtA#vџџџџџџџџџџџџx<Fэu џџџџџџџџџџџџz>oitY(4itY kKqY kKqYitYpшhtYРшhtYё•Y@5itYx5itYpшhtYРшhtYё•Y`€dtYА5itYc`ИЗmќ ѕuhk˜tџџџџ=qA#vџџџџџџџџџџџџ=<$vџџџџр?E v№P?t~ vџџџџџџџџ`?ИSўu`џџџџp?Gќњu џџџџp?HЬ3vp`?tA#vџџџџџџџџџџџџ?<$vџџџџP@E v`P@t~ vџџџџџџџџ@ИSўuџџџџ @Gќњuџџџџ @HЬ3v `@tA#vџџџџџџџџџџџџ@<FэuРџџџџџџџџџџџџA>РƒjtYƒjtYё•Y€яхmYшƒЌnYРƒjtYƒjtYё•Y@Э6vYˆЄЊnY€fˆ PltY`s7qY@‰jtYQ*vp‡vџџџџџџџџP< vPџџџџ`Vv`@џџџџ+Fэu џџџџџџџџ>$vџџџџE v PtыuџџџџpŽЬ3vp`4tA#vџџџџџџџџџџџџ<$vџџџџ06E v@P6tыuџџџџ6ŽЬ3v`VtA#vџџџџџџџџџџџџ6<FэuаџџџџџџџџџџџџW>€jtY€jtYЖЗmќjtY@jtYё•YР&•YjtY@jtYё•Y˜эOpY7Ўљv 0pu­сvp0€uRНv€ 0up‡vџџџџџџџџu<LіuPџџџџupѓuP€Аv.ОvPР@vp‡vџџџџџџџџРv<ХvРџџџџАv4|іu`Аџџџџvˆѓu`џџџџрxVvр џџџџx+ћu P№yD v PytA#vџџџџџџџџџџџџy<бv№џџџџџџџџylFэuаџџџџџџџџџџџџ{>h[CpYАdHpYeHpY ˆ$nYјg>uYјg>uYЈмFэuаџџџџџџџџџџџџ>рajtYрajtYРјП ltY0ђltYРG}РG}€ђltYађltYpЖxo•YA#uYQ*v`?p‡vџџџџџџџџ€?<LіuP€џџџџ?фяu` џџџџ@‘ђuP АBM[~vџџџџџџџџK|Fэu џџџџџџџџџџџџK>€њktY€њktYРјП0itY0itYјG_mYјG_mY˜ƒuY№ЙЗmќQ*vР@ntŠp‡vџџџџџџџџPŠ< vPџџџџ`ŠVv`@џџџџŠ+Fэu џџџџџџџџ‹>$vџџџџŽE v PŽtыuџџџџpŽŽЬ3vp`tA#vџџџџџџџџџџџџŽ<$vџџџџ0’E v@P’tыuџџџџ’ŽЬ3v`•tA#vџџџџџџџџџџџџ’<Fэuаџџџџџџџџџџџџ–>€њktY€њktYЗЗmќ€їltYаїltYё•YРCдtY€їltYаїltYё•Y€яхmYijtYћu €PDQ*v8Xpt Pp‡vџџџџџџџџP<)vPP2A#vџџџџџџџџџџџџP<LіuP€џџџџPћu РQD}!vPPQBA#vџџџџџџџџџџџџQ<Lіu`РџџџџQОv`@ Sp‡vџџџџџџџџ№S<Lіup№џџџџStѕupџџџџU|§ђupџџџџџџџџU>[~vџџџџџџџџV|Fэu џџџџџџџџџџџџV>РxdtY@ydtY`d˜tY`d˜tY˜ЫptYаЫptY@вptY@вptY№ЙЗmќ`ЫptYРјП€—ntYа—ntYРЖ=nYžтurOm@P%RVvP€џџџџ%+žтuРЏЗm`&Rwўu`џџџџ&|їџu`џџџџџџџџ&>Q*vEпwаH)pосuа€X*ЕЬ3v€P*tосu h+ЕЬ3v`+t‡vџџџџџџџџ )<>тu@rtџџџџ0)Š€v џџџџџџџџ+‰žтurOmАx.RwўuАџџџџ.|їџuАџџџџџџџџ.>[~vџџџџџџџџ/|Fэu џџџџџџџџџџџџ/>kjtYkjtYkjtYиptYиptY ajtYШЭptYkjtY№ЙЗmќ€2stYа2stYѓv@P1?ѓv@`1?ћu €2Dмќu А3GяuP 4Hшќu 5Hшќu 6Hшќu 7Hяu`8HЬ3vP8tA#vџџџџџџџџџџџџ2<Lіup€џџџџ2Œ№up Р;RїџuРџџџџџџџџ;>Fэu№џџџџџџџџџџџџ<>ˆо•Yxп•YшXЛqY€RЩqY`{NpY ŠNpY(FpYАvYxOШqY PЩqY€ї$qY№ЙЗmќžтurOm`PЌR#(vPџџџџ`ќЌ{Vv`€џџџџЌ+žтu/Пlp­Rwўupџџџџ­|їџupџџџџџџџџ­>Q*vEпwаHАpосuаXБЕЬ3vPБtосu  hВЕЬ3v `Вt‡vџџџџџџџџАА<>тuџџџџ0АŠ€vАџџџџџџџџВ‰žтurOmРxЕRwўuРџџџџЕ|їџuРџџџџџџџџЕ>[~vџџџџџџџџЖ|Fэu џџџџџџџџџџџџЖ>pвptYpвptYpвptYа‡•tYа‡•tY ajtYШЭptYpвptY№ЙЗmќ @ЎrYѓvўP‰?ОvPрŠp‡vџџџџџџџџ€Š<Lіu`€џџџџŠ$vџџџџ ŒE}!v`PŒB‡vџџџџџџџџ Œ< v џџџџАŒVvА@џџџџŒ+Fэu0џџџџџџџџ>‘ђu``РMЗ1vрўџџџџџџџџџџ*ш0vРџџџџџџџџFэuрџџџџџџџџ–>Fэuаџџџџџџџџџџџџ—>рAдtYрAдtYРsitYtitYp:‡Р™vYР™vY Ж_pY№ЙЗmќ$vџџџџ€eEœ"v`ecЬ3v`Pet v€`etœ"vppecЬ3vppet‡vџџџџџџџџ€e<LіuP€џџџџeC vPџџџџ fšVv @џџџџf+Fэuрџџџџџџџџg>ђuPаАjVvАрџџџџj+$vџџџџ kE§uАа kq‡vџџџџџџџџРk<)vРPk2A#vџџџџџџџџџџџџk<юvw”lџџџџџџџџlOFэuPџџџџџџџџџџџџn>p}itYР}itY€v„РѕhtYіhtY М–ŠOpY#itY`#itY0Х–ЗЗmќ†dtY~itY`~itYЧ•Y`ЯetYР#itY€eќmY€eќmYpnitYісu Gq‡vџџџџџџџџPG<ѕvP `G.ісuрHq‡vџџџџџџџџpH< vpџџџџ€HХv€џџџџ`H4ѕv`€`H.ісu` Iq‡vџџџџџџџџI<Хvџџџџ`I4ѕv` `I.ісu0Jq‡vџџџџџџџџ J< v џџџџАJХvАџџџџ`J4ѕv` `J.§u€ @Kq‡vџџџџџџџџРK< vРџџџџаKХvаџџџџ`K4wўu`џџџџK|їџu`џџџџџџџџK>[~vџџџџџџџџL|FэuрџџџџџџџџџџџџL>  ŽuY  ŽuY еrmY еrmYœtYœtYрœtYрœtYHˆ"nYш"nYР.4nYР.4nY`ИЗmќісu Gq‡vџџџџџџџџPG<ѕvP `G.ісuрHq‡vџџџџџџџџpH< vpџџџџ€HХv€џџџџ`H4ѕv`€`H.ісu` Iq‡vџџџџџџџџI<Хvџџџџ`I4ѕv` `I.ісu0Jq‡vџџџџџџџџ J< v џџџџАJХvАџџџџ`J4ѕv` `J.§u€ @Kq‡vџџџџџџџџРK< vРџџџџаKХvаџџџџ`K4wўu`џџџџK|їџu`џџџџџџџџK>[~vџџџџџџџџL|FэuрџџџџџџџџџџџџL>  ŽuY  ŽuY еrmY еrmYœtYœtYрœtYрœtYHˆ"nYш"nYР.4nYР.4nY`ИЗmќ$vџџџџ`YE vpPYt v``YtA#vџџџџџџџџџџџџY<$vџџџџ0ZE v@PZt‡vџџџџџџџџ`Z< v`џџџџpZVvp€џџџџZ+$vџџџџа[E vрP[tA#vџџџџџџџџџџџџ[<$vџџџџА]E vРP]t vА`]tA#vџџџџџџџџџџџџ]<$vџџџџ€ ^EA#vџџџџџџџџџџџџ^<Fэupџџџџџџџџџџџџ_>АфhtYхhtYР еpYрnitY $•YPхhtY хhtY€—•YxХ•Y№хhtY@цhtY€AЛqYˆX†nYцhtYрцhtYhб•Y@јhtY€'itYр'itYаBЛqY№p^uYА~$nY№рhtY@сhtYˆ~NqYѓvўPЬ?фяu`€џџџџЭ$vџџџџpЮE$vџџџџ€ЯE„яu`€ бGяuP€€вHЬ3v€Pвt$vџџџџPдE v`Pдt‡vџџџџџџџџд<)v`д2‡vџџџџџџџџ Я<)v Pд2 ђu`аАжЙvАPРжЬ3vР`жt‡vџџџџџџџџаЮ<iхuаџџџџж|œ§uаџџџџџџџџж>[~vџџџџџџџџи|Fэuџџџџџџџџџџџџи>€Ь vY@ћhtY€ћhtY/TpYРћhtYќhtYxe•YР-•Y R•Y=itYШ=itYР-,qYши,uY@}АЗЗmќ@[~vџџџџџџџџc|Fэu№џџџџџџџџџџџџc>ўhtY@ўhtY`Œ~ј7•Y?itYP?itY€к•YЇnY€ўhtYРўhtYј7•YрitYрitYАЗЗmќѓvўPx?ісuрyqВvPPyu‡vџџџџџџџџ`y< v`џџџџpyVvpРџџџџy+ісu`zqВvPPzu‡vџџџџџџџџ€z<iхu€џџџџz|œ§u€џџџџџџџџz>ісuр }qВvPP}u‡vџџџџџџџџ}< vџџџџ }Vv Рџџџџ}+ісu`0~qВvPP~u‡vџџџџџџџџА~<iхuАџџџџ~|œ§uАџџџџџџџџ~>Fэuрџџџџџџџџ>[~vџџџџџџџџ‚|FэuАџџџџџџџџџџџџ‚>P-JvYP-JvY`jtY`jtY kKqY kKqYР`jtYР`jtYР_|АЗЗmќ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџˆ‚ftY џџџџEfuўч€ˆљ;pYxƒftY џџџџпЂ€>bР€fˆh„ftY џџџџвqжјГьbpnYX…ftY џџџџЈџьF2щж BpY˜}tY џџџџ'дшiJљўиxя›uYˆ~tY џџџџпjхСІ|SыаиtY№?nY џџџџк!хŠ'ч€h[CpYр?nY џџџџмYUDЬwƒШ@•Yа?nY џџџџ[єдАNpђиюOpYР ?nY џџџџы*‘’‡:К€€aHpYА!?nY џџџџTжryАа€{ˆ "?nY џџџџjЋеПц€@F}#?nY џџџџoн/)6””‚"nY€$?nY џџџџeР‡s€Л“јЌдpYp%?nY џџџџЪ>уAЪ‘”˜ˆ"nY`&?nY џџџџwOЙъВSЇŸhІдpYP'?nY џџџџiZ‹Rњz‘”{"nY@(?nY џџџџaF"ЕЮDЊ№™MpY0)?nY џџџџQРИSГљР™MpY *?nY џџџџеPСSЂД9“BpY+?nY џџџџЃNЮј‹ђwєРœMpY,?nY џџџџ„„яCпjSˆ™MpY№,?nY џџџџ;н>e›иŽР" tYр-?nY я_ќ›сMд‡"nYј1?nY џџџџ•jNпыiвРуОqYш2?nY џџџџ!~в™5Љдкp}&nYи3?nY еQХйж”› &nYШ4?nY џџџџсе0Ў‰Š€BpYИ5?nY џџџџџбЬ0Щwƒ АbР€fˆ€ftY џџџџБэ^+ћДp0itYpftY џџџџїI1юgŽyкpnitY`‘ftY џџџџ&xwФhCCЇРoitYP’ftY џџџџФXXџІBикpœtY@“ftY џџџџеяЦМ'AYЛ0itY0”ftY џџџџжXŠЕq4и@ј“tY •ftY .ОФОv‘”`d˜tY–ftY џџџџ‰WыџЕўу0†dtY—ftY џџџџoK(lПР1itY№—ftY џџџџю[ўdl=ЊЫ02itYр˜ftY џџџџЏЭр QAѓƒh2itYа™ftY џџџџп(dˆЖЧг80itY œftY џџџџFЉ­лбсџ3itYftY џџџџЄЛNЭyЗџ€3itY№?nY џџџџк!хŠ'ч€h[CpYа?nY џџџџ[єдАNpђиюOpYР ?nY џџџџы*‘’‡:К€€aHpYА!?nY џџџџTжryАа€{ˆ "?nY џџџџjЋеПц€@F}#?nY џџџџoн/)6””‚"nY€$?nY џџџџeР‡s€Л“јЌдpYp%?nY џџџџЪ>уAЪ‘”˜ˆ"nY`&?nY wOЙъВSЇŸhІдpYP'?nY џџџџiZ‹Rњz‘”{"nY@(?nY џџџџaF"ЕЮDЊ№™MpY0)?nY џџџџQРИSГљР™MpY *?nY еPСSЂД9“BpY+?nY џџџџЃNЮј‹ђwєРœMpY,?nY џџџџ„„яCпjSˆ™MpYost( $font_family_id ) { $error = new WP_Error( 'rest_post_invalid_parent', __( 'Invalid post parent ID.', 'default' ), array( 'status' => 404 ) ); if ( (int) $font_family_id <= 0 ) { return $error; } $font_family_post = get_post( (int) $font_family_id ); if ( empty( $font_family_post ) || empty( $font_family_post->ID ) || 'wp_font_family' !== $font_family_post->post_type ) { return $error; } return $font_family_post; } /** * Prepares links for the request. * * @since 6.5.0 * * @param WP_Post $post Post object. * @return array Links for the given post. */ protected function prepare_links( $post ) { // Entity meta. return array( 'self' => array( 'href' => rest_url( $this->namespace . '/font-families/' . $post->post_parent . '/font-faces/' . $post->ID ), ), 'collection' => array( 'href' => rest_url( $this->namespace . '/font-families/' . $post->post_parent . '/font-faces' ), ), 'parent' => array( 'href' => rest_url( $this->namespace . '/font-families/' . $post->post_parent ), ), ); } /** * Prepares a single font face post for creation. * * @since 6.5.0 * * @param WP_REST_Request $request Request object. * @return stdClass Post object. */ protected function prepare_item_for_database( $request ) { $prepared_post = new stdClass(); // Settings have already been decoded by ::sanitize_font_face_settings(). $settings = $request->get_param( 'font_face_settings' ); // Store this "slug" as the post_title rather than post_name, since it uses the fontFamily setting, // which may contain multibyte characters. $title = WP_Font_Utils::get_font_face_slug( $settings ); $prepared_post->post_type = $this->post_type; $prepared_post->post_parent = $request['font_family_id']; $prepared_post->post_status = 'publish'; $prepared_post->post_title = $title; $prepared_post->post_name = sanitize_title( $title ); $prepared_post->post_content = wp_json_encode( $settings ); return $prepared_post; } /** * Sanitizes a single src value for a font face. * * @since 6.5.0 * * @param string $value Font face src that is a URL or the key for a $_FILES array item. * @return string Sanitized value. */ protected function sanitize_src( $value ) { $value = ltrim( $value ); return false === wp_http_validate_url( $value ) ? (string) $value : sanitize_url( $value ); } /** * Handles the upload of a font file using wp_handle_upload(). * * @since 6.5.0 * * @param array $file Single file item from $_FILES. * @return array|WP_Error Array containing uploaded file attributes on success, or WP_Error object on failure. */ protected function handle_font_file_upload( $file ) { add_filter( 'upload_mimes', array( 'WP_Font_Utils', 'get_allowed_font_mime_types' ) ); // Filter the upload directory to return the fonts directory. add_filter( 'upload_dir', '_wp_filter_font_directory' ); $overrides = array( 'upload_error_handler' => array( $this, 'handle_font_file_upload_error' ), // Not testing a form submission. 'test_form' => false, // Only allow uploading font files for this request. 'mimes' => WP_Font_Utils::get_allowed_font_mime_types(), ); // Bypasses is_uploaded_file() when running unit tests. if ( defined( 'DIR_TESTDATA' ) && DIR_TESTDATA ) { $overrides['action'] = 'wp_handle_mock_upload'; } $uploaded_file = wp_handle_upload( $file, $overrides ); remove_filter( 'upload_dir', '_wp_filter_font_directory' ); remove_filter( 'upload_mimes', array( 'WP_Font_Utils', 'get_allowed_font_mime_types' ) ); return $uploaded_file; } /** * Handles file upload error. * * @since 6.5.0 * * @param array $file File upload data. * @param string $message Error message from wp_handle_upload(). * @return WP_Error WP_Error object. */ public function handle_font_file_upload_error( $file, $message ) { $status = 500; $code = 'rest_font_upload_unknown_error'; if ( __( 'Sorry, you are not allowed to upload this file type.' ) === $message ) { $status = 400; $code = 'rest_font_upload_invalid_file_type'; } return new WP_Error( $code, $message, array( 'status' => $status ) ); } /** * Returns relative path to an uploaded font file. * * The path is relative to the current fonts directory. * * @since 6.5.0 * @access private * * @param string $path Full path to the file. * @return string Relative path on success, unchanged path on failure. */ protected function relative_fonts_path( $path ) { $new_path = $path; $fonts_dir = wp_get_font_dir(); if ( str_starts_with( $new_path, $fonts_dir['basedir'] ) ) { $new_path = str_replace( $fonts_dir['basedir'], '', $new_path ); $new_path = ltrim( $new_path, '/' ); } return $new_path; } /** * Gets the font face's settings from the post. * * @since 6.5.0 * * @param WP_Post $post Font face post object. * @return array Font face settings array. */ protected function get_settings_from_post( $post ) { $settings = json_decode( $post->post_content, true ); $properties = $this->get_item_schema()['properties']['font_face_settings']['properties']; // Provide required, empty settings if needed. if ( null === $settings ) { $settings = array( 'fontFamily' => '', 'src' => array(), ); } // Only return the properties defined in the schema. return array_intersect_key( $settings, $properties ); } } https://www.timminsharlan.com/post-sitemap1.xml 2026-01-16T13:42:17-05:00 https://www.timminsharlan.com/page-sitemap1.xml 2025-07-01T16:41:26-04:00