wdwprepschool.com

Website review wdwprepschool.com

WDW Prep School - oddly specific Disney parks (and related) planning

 Generated on May 02 2026 01:29 AM

Old data? UPDATE !

The score is 55/100

SEO Content

Title

WDW Prep School - oddly specific Disney parks (and related) planning

Length : 68

Perfect, your title contains between 10 and 70 characters.

Description

Learn how to maximize your dollars and time as you plan the trip you've always dreamt of.

Length : 89

Great, your meta description contains between 70 and 160 characters.

Keywords

Very bad. We haven't found meta keywords on your page. Use this free online meta tags generator to create keywords.

Og Meta Properties

Good, your page take advantage of Og Properties.

Property Content
url https://wdwprepschool.com
title WDW Prep School - oddly specific Disney parks (and related) planning
description Learn how to maximize your dollars and time as you plan the trip you've always dreamt of.
type website
image https://wdwprepschool.com/wp-content/uploads/wdw-prep-school-you-ll-learn-things-you-never-knew-you-never-knew.jpg
image:width 500
image:type image/jpeg
site_name WDW Prep School
locale en_US

Headings

H1 H2 H3 H4 H5 H6
1 9 10 2 0 0
  • [H1]
  • [H2] ","content":"","sidebar":"","sticky_sidebar":"","adhesion":""}}; /* */ Uh oh! We don't support IE due to its failure to integrate new web standards. For the best browsing experience, please use More Info → const headerLogoContainer = document.querySelector('.header-container'); headerLogoContainer.classList.add('preloaded'); /*! * FullCalendar v1.6.4-yearview * Docs & License: http://arshaw.com/fullcalendar/ * (c) 2013 Adam Shaw - 2014 Tanguy Pruvot */ /* * Use fullcalendar.css for basic styling. * For event drag & drop, requires jQuery UI draggable. * For event resizing, requires jQuery UI resizable. */ (function($, undefined) { ;; var defaults = { // display defaultView: 'month', aspectRatio: 1.35, header: { left: 'title', center: '', right: 'today prev,next' }, weekends: true, weekNumbers: false, weekNumberCalculation: 'iso', weekNumberTitle: 'W', // editing //editable: false, //disableDragging: false, //disableResizing: false, allDayDefault: true, ignoreTimezone: true, // event ajax lazyFetching: true, startParam: 'start', endParam: 'end', // date restriction minDate: null, maxDate: null, // time formats titleFormat: { year: 'yyyy', month: 'MMMM yyyy', week: "MMM d[ yyyy]{ '—'[ MMM] d yyyy}", day: 'dddd, MMM d, yyyy' }, columnFormat: { year: 'MMMM', month: 'ddd', week: 'ddd M/d', day: 'dddd M/d' }, timeFormat: { // for event elements '': 'h(:mm)t' // default }, // locale isRTL: false, firstDay: 0, monthNames: ['January','February','March','April','May','June','July','August','September','October','November','December'], monthNamesShort: ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'], dayNames: ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'], dayNamesShort: ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'], dayNamesShortest: ['S','M','T','W','T','F','S'], buttonText: { prev: "‹", next: "›", prevYear: "«", nextYear: "»", today: 'today', year: 'year', month: 'month', week: 'week', day: 'day' }, // jquery-ui theming theme: false, buttonIcons: { prev: 'circle-triangle-w', next: 'circle-triangle-e' }, //selectable: false, unselectAuto: true, dropAccept: '*', handleWindowResize: true }; // right-to-left defaults var rtlDefaults = { header: { left: 'next,prev today', center: '', right: 'title' }, buttonText: { prev: "›", next: "‹", prevYear: "»", nextYear: "«" }, buttonIcons: { prev: 'circle-triangle-e', next: 'circle-triangle-w' } }; ;; var fc = $.fullCalendar = { version: "1.6.4-yearview" }; var fcViews = fc.views = {}; $.fn.fullCalendar = function(options) { // method calling if (typeof options == 'string') { var args = Array.prototype.slice.call(arguments, 1); var res; this.each(function() { var calendar = $.data(this, 'fullCalendar'); if (calendar && $.isFunction(calendar[options])) { var r = calendar[options].apply(calendar, args); if (res === undefined) { res = r; } if (options == 'destroy') { $.removeData(this, 'fullCalendar'); } } }); if (res !== undefined) { return res; } return this; } options = options || {}; // would like to have this logic in EventManager, but needs to happen before options are recursively extended var eventSources = options.eventSources || []; delete options.eventSources; if (options.events) { eventSources.push(options.events); delete options.events; } options = $.extend(true, {}, defaults, (options.isRTL || options.isRTL===undefined && defaults.isRTL) ? rtlDefaults : {}, options ); this.each(function(i, _element) { var element = $(_element); var calendar = new Calendar(element, options, eventSources); element.data('fullCalendar', calendar); // TODO: look into memory leak implications calendar.render(); }); return this; }; // function for adding/overriding defaults function setDefaults(d) { $.extend(true, defaults, d); } ;; function Calendar(element, options, eventSources) { var t = this; // exports t.options = options; t.render = render; t.destroy = destroy; t.refetchEvents = refetchEvents; t.reportEvents = reportEvents; t.reportEventChange = reportEventChange; t.rerenderEvents = rerenderEvents; t.changeView = changeView; t.select = select; t.unselect = unselect; t.prev = prev; t.next = next; t.prevYear = prevYear; t.nextYear = nextYear; t.today = today; t.gotoDate = gotoDate; t.incrementDate = incrementDate; t.formatDate = function(format, date) { return formatDate(format, date, options) }; t.formatDates = function(format, date1, date2) { return formatDates(format, date1, date2, options) }; t.getDate = getDate; t.getView = getView; t.option = option; t.trigger = trigger; // imports EventManager.call(t, options, eventSources); var isFetchNeeded = t.isFetchNeeded; var fetchEvents = t.fetchEvents; // locals var _element = element[0]; var header; var headerElement; var content; var tm; // for making theme classes var currentView; var elementOuterWidth; var suggestedViewHeight; var resizeUID = 0; var ignoreWindowResize = 0; var date = new Date(); var events = []; var _dragElement; /* Main Rendering -----------------------------------------------------------------------------*/ setYMD(date, options.year, options.month, options.date); function render(inc) { if (!content) { initialRender(); } else if (elementVisible()) { // mainly for the public API calcSize(); _renderView(inc); } } function initialRender() { tm = options.theme ? 'ui' : 'fc'; element.addClass('fc'); if (options.isRTL) { element.addClass('fc-rtl'); } else { element.addClass('fc-ltr'); } if (options.theme) { element.addClass('ui-widget'); } content = $("") .prependTo(element); header = new Header(t, options); headerElement = header.render(); if (headerElement) { element.prepend(headerElement); } changeView(options.defaultView); if (options.handleWindowResize) { $(window).resize(windowResize); } // needed for IE in a 0x0 iframe, b/c when it is resized, never triggers a windowResize if (!bodyVisible()) { lateRender(); } } // called when we know the calendar couldn't be rendered when it was initialized, // but we think it's ready now function lateRender() { setTimeout(function() { // IE7 needs this so dimensions are calculated correctly if (!currentView.start && bodyVisible()) { // !currentView.start makes sure this never happens more than once renderView(); } },0); } function destroy() { if (currentView) { trigger('viewDestroy', currentView, currentView, currentView.element); currentView.triggerEventDestroy(); } $(window).unbind('resize', windowResize); header.destroy(); content.remove(); element.removeClass('fc fc-rtl ui-widget'); } function elementVisible() { return element.is(':visible'); } function bodyVisible() { return $('body').is(':visible'); } /* View Rendering -----------------------------------------------------------------------------*/ function changeView(newViewName) { if (!currentView || newViewName != currentView.name) { _changeView(newViewName); } } function _changeView(newViewName) { ignoreWindowResize++; if (currentView) { trigger('viewDestroy', currentView, currentView, currentView.element); unselect(); currentView.triggerEventDestroy(); // trigger 'eventDestroy' for each event freezeContentHeight(); currentView.element.remove(); header.deactivateButton(currentView.name); } header.activateButton(newViewName); currentView = new fcViews[newViewName]( $("") .appendTo(content), t // the calendar object ); renderView(); unfreezeContentHeight(); ignoreWindowResize--; } function renderView(inc) { if ( !currentView.start || // never rendered before inc || date < currentView.start || date >= currentView.end // or new date range ) { if (elementVisible()) { _renderView(inc); } } } function _renderView(inc) { // assumes elementVisible ignoreWindowResize++; if (currentView.start) { // already been rendered? trigger('viewDestroy', currentView, currentView, currentView.element); unselect(); clearEvents(); } freezeContentHeight(); currentView.render(date, inc || 0); // the view's render method ONLY renders the skeleton, nothing else setSize(); unfreezeContentHeight(); (currentView.afterRender || noop)(); updateTitle(); updateNavigation(); trigger('viewRender', currentView, currentView, currentView.element); currentView.trigger('viewDisplay', _element); // deprecated ignoreWindowResize--; getAndRenderEvents(); } /* Resizing -----------------------------------------------------------------------------*/ function updateSize() { if (elementVisible()) { unselect(); clearEvents(); calcSize(); setSize(); renderEvents(); } } function calcSize() { // assumes elementVisible if (options.contentHeight) { suggestedViewHeight = options.contentHeight; } else if (options.height) { suggestedViewHeight = options.height - (headerElement ? headerElement.height() : 0) - vsides(content); } else { suggestedViewHeight = Math.round(content.width() / Math.max(options.aspectRatio, .5)); } } function setSize() { // assumes elementVisible if (suggestedViewHeight === undefined) { calcSize(); // for first time // NOTE: we don't want to recalculate on every renderView because // it could result in oscillating heights due to scrollbars. } ignoreWindowResize++; currentView.setHeight(suggestedViewHeight); currentView.setWidth(content.width()); ignoreWindowResize--; elementOuterWidth = element.outerWidth(); } function windowResize() { if (!ignoreWindowResize) { if (currentView.start) { // view has already been rendered var uid = ++resizeUID; setTimeout(function() { // add a delay if (uid == resizeUID && !ignoreWindowResize && elementVisible()) { if (elementOuterWidth != (elementOuterWidth = element.outerWidth())) { ignoreWindowResize++; // in case the windowResize callback changes the height updateSize(); currentView.trigger('windowResize', _element); ignoreWindowResize--; } } }, 200); }else{ // calendar must have been initialized in a 0x0 iframe that has just been resized lateRender(); } } } /* Event Fetching/Rendering -----------------------------------------------------------------------------*/ // TODO: going forward, most of this stuff should be directly handled by the view function refetchEvents() { // can be called as an API method clearEvents(); fetchAndRenderEvents(); } function rerenderEvents(modifiedEventID) { // can be called as an API method clearEvents(); renderEvents(modifiedEventID); } function renderEvents(modifiedEventID) { // TODO: remove modifiedEventID hack if (elementVisible()) { currentView.setEventData(events); // for View.js, TODO: unify with renderEvents currentView.renderEvents(events, modifiedEventID); // actually render the DOM elements currentView.trigger('eventAfterAllRender'); } } function clearEvents() { currentView.triggerEventDestroy(); // trigger 'eventDestroy' for each event currentView.clearEvents(); // actually remove the DOM elements currentView.clearEventData(); // for View.js, TODO: unify with clearEvents } function getAndRenderEvents() { if (!options.lazyFetching || isFetchNeeded(currentView.visStart, currentView.visEnd)) { fetchAndRenderEvents(); } else { renderEvents(); } } function fetchAndRenderEvents() { fetchEvents(currentView.visStart, currentView.visEnd); // ... will call reportEvents // ... which will call renderEvents } // called when event data arrives function reportEvents(_events) { events = _events; renderEvents(); } // called when a single event's data has been changed function reportEventChange(eventID) { rerenderEvents(eventID); } /* Header Updating -----------------------------------------------------------------------------*/ function updateTitle() { header.updateTitle(currentView.title); } function updateTodayButton() { var today = new Date(); header.toggleEnable('today', (today < currentView.start || today >= currentView.end)); } function updateNavigation() { updateTodayButton(); if (options.minDate) { header.toggleEnable('prev', options.minDate < currentView.start); } if (options.maxDate) { header.toggleEnable('next', options.maxDate > currentView.end); } } /* Selection -----------------------------------------------------------------------------*/ function select(start, end, allDay) { currentView.select(start, end, allDay===undefined ? true : allDay); } function unselect() { // safe to be called before renderView if (currentView) { currentView.unselect(); } } /* Date -----------------------------------------------------------------------------*/ function prev() { renderView(-1); } function next() { renderView(1); } function prevYear() { addYears(date, -1); renderView(); } function nextYear() { addYears(date, 1); renderView(); } function today() { date = new Date(); renderView(); } function gotoDate(year, month, dateOfMonth) { if (year instanceof Date) { date = cloneDate(year); // provided 1 argument, a Date }else{ setYMD(date, year, month, dateOfMonth); } renderView(); } function incrementDate(years, months, days) { if (years !== undefined) { addYears(date, years); } if (months !== undefined) { addMonths(date, months); } if (days !== undefined) { addDays(date, days); } renderView(); } function getDate() { return cloneDate(date); } /* Height "Freezing" -----------------------------------------------------------------------------*/ function freezeContentHeight() { content.css({ width: '100%', height: content.height(), overflow: 'hidden' }); } function unfreezeContentHeight() { content.css({ width: '', height: '', overflow: '' }); } /* Misc -----------------------------------------------------------------------------*/ function getView() { return currentView; } function option(name, value) { if (value === undefined) { return options[name]; } if (name == 'height' || name == 'contentHeight' || name == 'aspectRatio') { options[name] = value; updateSize(); } } function trigger(name, thisObj) { if (options[name]) { return options[name].apply( thisObj || _element, Array.prototype.slice.call(arguments, 2) ); } } /* External Dragging ------------------------------------------------------------------------*/ if (options.droppable) { $(document) .bind('dragstart', function(ev, ui) { var _e = ev.target; var e = $(_e); if (!e.parents('.fc').length) { // not already inside a calendar var accept = options.dropAccept; if ($.isFunction(accept) ? accept.call(_e, e) : e.is(accept)) { _dragElement = _e; currentView.dragStart(_dragElement, ev, ui); } } }) .bind('dragstop', function(ev, ui) { if (_dragElement) { currentView.dragStop(_dragElement, ev, ui); _dragElement = null; } }); } } ;; function Header(calendar, options) { var t = this; // exports t.render = render; t.destroy = destroy; t.updateTitle = updateTitle; t.activateButton = activateButton; t.deactivateButton = deactivateButton; t.disableButton = disableButton; t.enableButton = enableButton; t.toggleEnable = toggleEnable; // locals var element = $([]); var tm; function render() { tm = options.theme ? 'ui' : 'fc'; var sections = options.header; if (sections) { element = $("") .append( $("") .append(renderSection('left')) .append(renderSection('center')) .append(renderSection('right')) ); return element; } } function destroy() { element.remove(); } function renderSection(position) { var e = $(""); var buttonStr = options.header[position]; if (buttonStr) { $.each(buttonStr.split(' '), function(i) { if (i > 0) { e.append(""); } var prevButton; $.each(this.split(','), function(j, buttonName) { if (buttonName == 'title') { e.append(" 
  • [H2] Hi! I’m Shannon Albert.
  • [H2] 2026 PLANNING
  • [H2] FEATURED
  • [H2] Current Events
  • [H2] COMING SOON
  • [H2] Don’t stand in line with everyone else.
  • [H2] Join the WDW Prep To Go Podcast
  • [H2] Contact an experienced agent
  • [H3] Each year, our advice on how to plan Disney World trips is viewed more than 12 million times. With monthly trips and stays in every resort, we work hard to bring you the best info so you can maximize your vacation time.
  • [H3] How to make Disney World reservations in 2026 (dining, Enchanting Extras, and more)
  • [H3] What’s New and Coming to Disney World in 2026, 2027 & Beyond
  • [H3] 2026 Disney World Discounts, Promotions & Special Offers
  • [H3] How Much Does it Cost to Go to Disney World in 2026?
  • [H3] When can I book a Disney World vacation package for 2027?
  • [H3] Disney World in January 2027: Crowds & Planning Info
  • [H3] 2026-2027 Disney World Crowd Calendar (best times to go)
  • [H3] How to make Disney World reservations in 2026 (dining, Enchanting Extras, and more)
  • [H3] Best Quick Service Restaurants at Disney World
  • [H4] Dynamic title for modals
  • [H4] Are you sure?

Images

We found 23 images on this web page.

12 alt attributes are empty or missing. Add alternative text so that search engines can better understand the content of your images.

Text/HTML Ratio

Ratio : 2%

This page's ratio of text to HTML code is below 15 percent, this means that your website probably needs more text content.

Flash

Perfect, no Flash content has been detected on this page.

Iframe

Great, there are no Iframes detected on this page.

URL Rewrite

Good. Your links looks friendly!

Underscores in the URLs

Perfect! No underscores detected in your URLs.

In-page links

We found a total of 17 links including 0 link(s) to files

Anchor Type Juice
More Info → External Passing Juice
' + htmlEscape(monthName) + ' External Passing Juice
Skip to Content Internal Passing Juice
How to make Disney World reservations in 2026 (dining, Enchanting Extras, and more) Internal Passing Juice
What’s New and Coming to Disney World in 2026, 2027 & Beyond Internal Passing Juice
2026 Disney World Discounts, Promotions & Special Offers Internal Passing Juice
How Much Does it Cost to Go to Disney World in 2026? Internal Passing Juice
When can I book a Disney World vacation package for 2027? Internal Passing Juice
Disney World in January 2027: Crowds & Planning Info Internal Passing Juice
2026-2027 Disney World Crowd Calendar (best times to go) Internal Passing Juice
Best Quick Service Restaurants at Disney World Internal Passing Juice
Listen Now Internal Passing Juice
Get In Touch Internal Passing Juice
ABOUT Internal Passing Juice
CONTACT Internal Passing Juice
PRIVACY POLICY Internal Passing Juice
- Internal Passing Juice

SEO Keywords

Keywords Cloud

how hours epcot info mickeys world more festival party disney

Keywords Consistency

Keyword Content Title Keywords Description Headings
info 23
disney 18
world 12
festival 8
epcot 6

Usability

Url

Domain : wdwprepschool.com

Length : 17

Favicon

Great, your website has a favicon.

Printability

Great. We have found a Print-Friendly CSS.

Language

Good. Your declared language is en.

Dublin Core

Great. This page take advantage of Dublin Core.

Document

Doctype

HTML 5

Encoding

Perfect. Your declared charset is UTF-8.

W3C Validity

Errors : 0

Warnings : 0

Email Privacy

Warning! At least one email address has been found in the plain text. Use free antispam protector to hide email from spammers.

Deprecated HTML

Great! We haven't found deprecated HTML tags in your HTML.

Speed Tips

Attention! Try to avoid nested tables in HTML.
Too bad, your website is using inline styles.
Too bad, your website has too many CSS files (more than 4).
Too bad, your website has too many JS files (more than 6).
Perfect, your website takes advantage of gzip.

Mobile

Mobile Optimization

Apple Icon
Meta Viewport Tag
Flash content

Optimization

XML Sitemap

Great, your website has an XML sitemap.

https://wdwprepschool.com/sitemap.xml
https://wdwprepschool.com/sitemap-home.xml
https://wdwprepschool.com/sitemap-posts.xml
https://wdwprepschool.com/sitemap-pages.xml
https://wdwprepschool.com/sitemap-categories.xml

Robots.txt

https://wdwprepschool.com/robots.txt

Great, your website has a robots.txt file.

Analytics

Great, your website has an analytics tool.

   Google Analytics
   Clicky

PageSpeed Insights


Device
Categories

Free SEO Testing Tool

Free SEO Testing Tool is a free SEO tool which provides you content analysis of the website.