{"id":2482289,"date":"2026-06-30T18:13:36","date_gmt":"2026-06-30T18:13:36","guid":{"rendered":"https:\/\/celebrity.land\/en\/?p=2482289"},"modified":"2026-06-30T18:13:36","modified_gmt":"2026-06-30T18:13:36","slug":"jk-rowling-meets-the-queen-in-holyroodhouse-palace-in-edinburgh","status":"publish","type":"post","link":"https:\/\/celebrity.land\/en\/jk-rowling-meets-the-queen-in-holyroodhouse-palace-in-edinburgh\/","title":{"rendered":"JK Rowling meets the Queen in Holyroodhouse Palace in Edinburgh"},"content":{"rendered":"<p><\/p>\n<div id=\"subscription-content\">\n<p>\n  Camilla was pictured with the Harry Potter author as the pair met during the royal family&#8217;s visit to Scotland for the annual <a target=\"_blank\" href=\"https:\/\/www.thenational.scot\/topics\/holyrood\/?ref=au\" target=\"_blank\">Holyrood<\/a> Week.\n<\/p>\n<p>\n  They reportedly discussed the importance of young people having access to books.\n<\/p>\n<p>\n  <img srcset=\"https:\/\/www.thenational.scot\/resources\/images\/21122275\/?type=mds-article-575 575w, https:\/\/www.thenational.scot\/resources\/images\/21122275\/?type=mds-article-962 962w, https:\/\/www.thenational.scot\/resources\/images\/21122275\/?type=mds-article-642 1400w, https:\/\/www.thenational.scot\/resources\/images\/21122275\/?type=mds-article-620 1401w\" sizes=\"(max-width: 575px) 575px, (max-width: 992px) 962px, (max-width: 1400px) 1400px, (min-width: 1401px) 1401px\" width=\"100%\"\/><span class=\"inline-image-caption\">The Queen during an audience with JK Rowling, at the Palace of Holyroodhouse in Edinburgh <em>(Image: Jane Barlow \/ PA)<\/em><\/span>\n<\/p>\n<p>\n  A post on the monarchy\u2019s official social media read: \u201cWith a shared passion for books and a deep commitment to children reading for pleasure, The Queen and author J.K. Rowling have met at the Palace of Holyroodhouse in <a target=\"_blank\" href=\"https:\/\/www.thenational.scot\/local-news\/edinburgh-news\/?ref=au\" target=\"_blank\">Edinburgh<\/a>.\n<\/p>\n<p>\n  \u201cHer Majesty and Ms Rowling discussed the importance of ensuring that young people have access to books and the vital part reading plays in opening doors for future generations.\u201d\n<\/p>\n<blockquote class=\"twitter-tweet\">\n<p>\n    \ud83d\udcd5 With a shared passion for books and a deep commitment to children reading for pleasure, The Queen and author J.K. Rowling have met at the Palace of Holyroodhouse in Edinburgh.<\/p>\n<p>Her Majesty and Ms Rowling discussed the importance of ensuring that young people have access to\u2026 <a target=\"_blank\" href=\"https:\/\/t.co\/Yx1Xy6olqC\" target=\"_blank\" rel=\"nofollow\">pic.twitter.com\/Yx1Xy6olqC<\/a>\n  <\/p>\n<p>\n    \u2014 The <a target=\"_blank\" href=\"https:\/\/www.thenational.scot\/topics\/royal-family\/?ref=au\" target=\"_blank\">Royal Family<\/a> (@RoyalFamily) <a target=\"_blank\" href=\"https:\/\/x.com\/RoyalFamily\/status\/2071956993854636242?ref_src=twsrc%5Etfw\" target=\"_blank\" rel=\"nofollow\">June 30, 2026<\/a>\n  <\/p>\n<\/blockquote>\n<p>\n  JK Rowling has become a prominent figure in the gender critical movement and has been accused of transphobia for her views on gender identity, which she denies.\n<\/p>\n<p>\n  <strong>READ MORE:<\/strong> <a target=\"_blank\" href=\"https:\/\/www.thenational.scot\/news\/26240703.outrage-left-wing-news-outlet-de-banked-without-explanation\/?ref=ed_recent\" target=\"_blank\"><strong>&#8216;Outrage&#8217; as left-wing news outlet &#8216;de-banked without explanation&#8217;<\/strong><\/a>\n<\/p>\n<p>\n  In 2022, she protested against against Scottish gender reform, which would have made it easier for trans people to self-identify as their acquired gender but was blocked by the <a target=\"_blank\" href=\"https:\/\/www.thenational.scot\/topics\/uk-government\/\" target=\"_blank\">UK Government<\/a> .\u00a0\n<\/p>\n<blockquote class=\"twitter-tweet\">\n<p>\n    I stand in solidarity with <a target=\"_blank\" href=\"https:\/\/x.com\/ForWomenScot?ref_src=twsrc%5Etfw\" target=\"_blank\" rel=\"nofollow\">@ForWomenScot<\/a> and all women protesting and speaking outside the Scottish parliament. <a target=\"_blank\" href=\"https:\/\/x.com\/hashtag\/NoToSelfID?src=hash&amp;ref_src=twsrc%5Etfw\" target=\"_blank\" rel=\"nofollow\">#NoToSelfID<\/a> <a target=\"_blank\" href=\"https:\/\/t.co\/5vZNaZu13H\" target=\"_blank\" rel=\"nofollow\">pic.twitter.com\/5vZNaZu13H<\/a>\n  <\/p>\n<p>\n    \u2014 J.K. Rowling (@jk_rowling) <a target=\"_blank\" href=\"https:\/\/x.com\/jk_rowling\/status\/1577964493702938626?ref_src=twsrc%5Etfw\" target=\"_blank\" rel=\"nofollow\">October 6, 2022<\/a>\n  <\/p>\n<\/blockquote>\n<p>\n  <br \/>She was pictured celebrating on a yacht with a cigar after the <a target=\"_blank\" href=\"https:\/\/www.thenational.scot\/topics\/uk-government\/?ref=au\" target=\"_blank\">UK Government<\/a> <a target=\"_blank\" href=\"https:\/\/www.thenational.scot\/news\/23254776.gender-recognition-reform-section-35-order-uks-nuclear-option\/?ref=ed_direct\" target=\"_blank\">used an unprecedented Section 35 order<\/a> to block the legislation.\n<\/p>\n<p>\n  She has also <a target=\"_blank\" href=\"https:\/\/www.thenational.scot\/news\/25190054.jk-rowling-fund-gender-critical-womens-cases-employers\/?ref=ed_direct\" target=\"_blank\">opened a fund to bankroll cases for women<\/a> \u201cfighting to retain sex-based rights\u201d.\n<\/p>\n<\/div>\n<p><script async src=\"\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><script type = \"text\/javascript\">\n( function () {\n    window._sp_ = {\n        config: {\n            baseEndpoint: 'https:\/\/a02342.thenational.scot',\n            accountId: 52,\n            targetingParams:{\n                subscribed: false,\n                privacy: false\n            },\n            gdpr: { },\n            events: {\n                onMessageReady: function (message_type) {\n                    trackSPEvents('event76');\n                },\n                onMessageChoiceSelect: function (message_type, choice_id, choice_type_id) {\n                    console.log('message_type: ', message_type);\n                    console.log('choice_id: ', choice_id);\n                    console.log('choice_type_id: ', choice_type_id);\n                    if ('yes' === 'yes') {\n                        if (choice_type_id === 12) {\n                            trackSPEvents('event83'); \/\/Consent Banner Reject All\n                            trackSPEvents('event82'); \/\/Journalism Message Shown\n                        }\n                        if (choice_type_id === 11) {\n                            trackSPEvents('event78');\n                        }\n                        if (choice_type_id === 9) {\n                            trackSPEvents('event77');\n                        }\n                    } else {\n                        \/\/ these are the second argument in non-gate\n                        if (choice_type_id === 12) {\n                            trackSPEvents('event77');\n                        }\n                        if (choice_type_id === 11) {\n                            trackSPEvents('event78');\n                        }\n                        if (choice_type_id === 13) {\n\t\t                    trackSPEvents('event83');\n                        }\n                    }\n                },\n                onPrivacyManagerActionStatus: function(message_type, status, actionType) {\n                    console.log('message_type: ' + message_type);\n                    console.log('status: ' + status);\n                    console.log('actionType: ' + actionType);\n                    if ('yes' === 'yes') {\n                        if (actionType === 11) {\n                            trackSPEvents('event79'); \/\/Privacy Manager Accept\n                        }\n                        if (actionType === 9) {\n                            trackSPEvents('event68'); \/\/Privacy Manager Redirect\n                        }\n                        if (actionType === 1) {\n                            trackSPEvents('event75'); \/\/Forced tcf String Change\n                        }\n                    } else {\n                    \/\/ these are the second argument in non-gate\n                        if (actionType === 13) {\n                            trackSPEvents('event81'); \/\/Privacy Manager Reject\n                        }\n                        if (actionType === 11) {\n                            trackSPEvents('event79'); \/\/Privacy Manager Accept\n                        }\n                        if (actionType === 1) {\n                            trackSPEvents('event80'); \/\/Privacy Manager Save & Exit\n                        }\n                    }\n                },\n                onPMCancel: function (message_type) {\n                    console.log('onPMCancel', message_type);\n                    trackSPEvents('event84'); \/\/Privacy Manager Back\n                },\n            }\n        }\n    }\n    __tcfapi('addEventListener', 2, function (tcData, success) {\n        console.log('SP: Event Listen:', tcData, success);\n        if (success && tcData.eventStatus === 'useractioncomplete') {\n            setTcfCookie(tcData.purpose.consents, tcData.purpose.legitimateInterests);\n            var csnt=\"none\";\n            if ($.cookie('_sp_enable_dfp_personalized_ads') === 'true') {\n                csnt=\"yes\";\n            } else if ($.cookie('_sp_enable_dfp_personalized_ads') === 'false') {\n                csnt=\"no\";\n            }\n            googletag.cmd.push(function() {\n                \/\/ console.log('DFP: Cookie check - setting dfpcsnt to ', csnt);\n                googletag.pubads().setTargeting('dfpcsnt', csnt);\n            });\n            \/\/ ready to start DFP\n            \/\/ console.log('PIANO: setting unrestricted via useractioncomplete');\n            \/\/ runPiano('unrestricted');\n            startAdvertising(tcData.listenerId);\n            var e = new Event('launch:cmp:choice-made');\n            window.dispatchEvent(e);\n        } else if (success && tcData.eventStatus === 'tcloaded') {\n            \/\/ tcloaded means a valid TCF v2.0 string is available\n            \/\/ console.log('PIANO: setting unrestricted via tcloaded');\n            \/\/ runPiano('unrestricted');\n            if (tcData.gdprApplies === false) {\n                $.cookie('_sp_enable_dfp_personalized_ads', 'true', {domain: '.thenational.scot', path: \"https:\/\/www.thenational.scot\/\", expires: 100});\n            }\n            startAdvertising(tcData.listenerId);\n        } else if (success && tcData.eventStatus === 'useractionnotcomplete') {\n            \/\/ do nothing - this means the user has not made a choice yet\n        } else if (success && tcData.eventStatus === 'cmpuishown') {\n            \/\/ do nothing - this means the CMP UI has been shown\n        } else if (!success) {\n            \/\/ $.cookie('_sp_enable_dfp_personalized_ads', 'true', {domain: '.thenational.scot', path: \"https:\/\/www.thenational.scot\/\", expires: 100});\n            \/\/ startAdvertising();\n        } else {\n            \/\/ console.log('PIANO: setting restricted');\n            \/\/ runPiano('restricted');\n        }\n    });\n    $(document).on('click', '.gdpr-option-v2', function (e) {\n        e.preventDefault();\n        sendEvent76 = false;\n        var id = $(this).data('v2-id');\n        if ($(this).data('is-gate') === 'yes') {\n            trackSPEvents('event87');\n            _sp_.gdpr.loadPrivacyManagerModal(id);\n        } else {\n            trackSPEvents('event77');\n            _sp_.gdpr.loadPrivacyManagerModal(id);\n        }\n    });\n    function getTcfData() {\n        __tcfapi('addEventListener', 2, function(data, success) {\n            if (!data.purpose || !data.purpose.consents || !data.purpose.legitimateInterests) {\n                \/\/ console.log('DFP: No TCF data found, not setting cookies');\n                return;\n            }\n            setTcfCookie(data.purpose.consents, data.purpose.legitimateInterests);\n        }, [755]);\n    }\n    getTcfData();\n    function setTcfCookie(data, legitimateInterests) {\n        var consents = [];\n        $.each(data, function(id, consent)  {\n            var c = (consent === true) ? 'yes' : 'no';\n            consents.push(c)\n        });\n        \/\/ console.log('DFP: consents length: ', consents.length);\n        if (consents.length !== 10) {\n            \/\/ consents = consents.fill('no', consents.length, 10);\n            for (var i = consents.length; i < 10; i++) {\n                consents[i] = 'no';\n            }\n        }\n        \/\/ console.log('DFP: Found consents to store in cookie:', consents);\n        $.cookie('prev-tcf-v2', consents.join(','), {domain: '.thenational.scot', path: \"https:\/\/www.thenational.scot\/\", expires: 100});\n\n        var consentEvent4 = 'none';\n        if (typeof data[4] !== 'undefined') {\n            consentEvent4 = data[4] ? 'true' : 'false';\n        }\n        $.cookie('_sp_enable_dfp_personalized_ads', consentEvent4, {domain: '.thenational.scot', path: \"https:\/\/www.thenational.scot\/\", expires: 100});\n\n        var legitInterest=\"none\";\n        if (legitimateInterests &#038;&#038; typeof legitimateInterests[2] !== 'undefined') {\n            legitInterest = legitimateInterests[2] ? 'true' : 'false';\n        }\n\n        $.cookie('_sp_legitimate_interests', legitInterest , {domain: '.thenational.scot', path: \"https:\/\/www.thenational.scot\/\", expires: 100});\n    }\n\n    var sendEvent76 = true;\n\n    function trackSPEvents(events) {\n        if (events === 'event76' &#038;&#038; !sendEvent76) {\n            return;\n        } else if (events === 'event76') {\n            sendEvent76 = false;\n        }\n\n        if (typeof window.s !== 'object') {\n            \/\/ console.log('DFP: No window.s object found, trying again in 1 second');\n            window.setTimeout(function () { trackSPEvents(events)} , 1000);\n            return;\n        }\n\n        \/\/ console.log(\"ADB: Tracking %s\", events);\n        \/\/ Re-create the Omniture object so the data can be tracked.\n        var s = window.s;\n\n        if (events.indexOf('event70') !== -1) {\n            \/\/ console.log('DFP: Events passed, added evars');\n            s.eVar35 = 'enabled';\n            s.prop35 = 'enabled';\n        }\n\n        s.events = events;\n        s.linkTrackEvents = events;\n        s.linkTrackVars = \"eVar2,eVar3,eVar4,eVar5,eVar6,evar7,evar8,evar9,eVar16,eVar19,eVar26,eVar35,eVar43,eVar67,prop35\";\n        s.suppressPageView = true;\n        s.tl(true,'o','Ad Block');\n    }\n\n    function startAdvertising(id)\n    {\n        if (typeof window.doNotAdvertise !== 'undefined' &#038;&#038; window.doNotAdvertise === true) {\n            return;\n        }\n\n        \/\/ console.log(\"DFP: Is the page fully loaded?\", window.googleReady);\n        if (window.googleReady !== true) {\n            window.setTimeout(function () {\n                \/\/ console.log('DFP: Google not fully loaded yet, pausing quarter of a second before trying again');\n                startAdvertising(id);\n            }, 250);\n            return;\n        }\n\n        \/\/ Ensure that we never run this code twice\n        if (window.advertisingStart === true) {\n            return;\n        }\n        \/\/ console.log('DFP: Running advertisement');\n        window.advertisingStart = true;\n\n        var googletag = window.googletag;\n        \/\/ init google objects and array\n        (function() {\n            var gads = document.createElement('script');\n            gads.async = true;\n            gads.type=\"text\/javascript\";\n            gads.src=\"https:\/\/securepubads.g.doubleclick.net\/tag\/js\/gpt.js\";\n            var node = document.getElementsByTagName('script')[0];\n            node.parentNode.insertBefore(gads, node);\n        })();\n\n        \/\/ launch the exco slideshow player\n        launchExcoSlideshow();\n\n        \/\/ load facebook etc\n        loadSocials();\n\n        \/\/ Checking our decision to use headerbidding (shorterned as prebid) is correct\n        \/\/ via system logic, and that we have the simplified consent to do so\n        if (usePrebid &#038;&#038; $.cookie('_sp_enable_dfp_personalized_ads') === 'true') {\n            var e = new Event('launch:sourcepoint:consentaccepted');\n            window.dispatchEvent(e);\n\n            \/\/ AP code initialisation\n            \/\/ the script is loaded via launch, once we have detected a consent signal via the datalayer.\n            fetchAp();\n\n            var site=\"desktop\";\n            var _site=\"desktop\";\n\n            \/\/ load IAS scripts and set up vars\n            (function() {\n                var ias = document.createElement('script');\n                ias.async = true;\n                ias.type=\"text\/javascript\";\n                ias.src=\"https:\/\/cdn.adsafeprotected.com\/iasPET.1.js\";\n                var node = document.getElementsByTagName('script')[0];\n                node.parentNode.insertBefore(ias, node);\n            })();\n\n            \/\/ load the prebid script\n            (function() {\n                var pbs = document.createElement('script');\n                pbs.async = true;\n                pbs.type=\"text\/javascript\";\n                pbs.src=\"https:\/\/micro.rubiconproject.com\/prebid\/dynamic\/11022.js?group=newsquest\";\n                var node = document.getElementsByTagName('script')[0];\n                node.parentNode.insertBefore(pbs, node);\n            })();\n\n            \/\/ tell google to actually get the bids from all relevant vendors when loaded\n            googletag.cmd.push(function () {\n                fetchHeaderBids();\n            });\n        }\n\n        \/\/ Outbrain\n        if (\n            (window.data_layer.user.advertising_experience === 'Ad-Free' || window.data_layer.config.disable_outbrain === 'yes') ||\n            (window.data_layer.user.advertising_experience === 'Ad-Light' &#038;&#038; window.data_layer.config.disable_outbrain_with_ad_light === 'yes')\n        ) {\n            \/\/ console.log(\"No Outbrain script loading due to page settings\");\n        } else {\n            \/\/ console.log(\"Loading Outbrain\");\n            var ob = document.createElement('script');\n            ob.async = true;\n            ob.type=\"text\/javascript\";\n            ob.src=\"https:\/\/widgets.outbrain.com\/outbrain.js\";\n            var node = document.getElementsByTagName('script')[0];\n            node.parentNode.insertBefore(ob, node);\n        }\n\n\n        \/\/ remove the listener\n        if (id !== null) {\n            window.__tcfapi('removeEventListener', 2, function (success) { }, id);\n        }\n    }\n\n    \/**\n     * Wait until we have advertising consent to show this advertising\n     * based replacement for the single image on our article pages\n     * This logic is based on excoSlidshowPlayerID that only appears on the page\n     * if a user is NOT a subscriber (including privacy plus) and the page has the\n     * correct information to show it (doesn't have a video, not in sport etc)\n     *\/\n    function launchExcoSlideshow() {\n        const slideShowPlayerId = window.excoSlideshowPlayerId;\n        \/\/ if we do not have a player id, we do not need to do anything\n        if (!slideShowPlayerId) {\n            return;\n        }\n\n        \/\/ this is exco's supplied code, modified for our use\n        (function (d, s, n) {\n            fjs = d.getElementsByTagName(s)[0];\n            js = d.createElement(s);\n            js.className = n;\n            js.src=\"\/\/player.ex.co\/player\/\" + slideShowPlayerId;\n            js.setAttribute('programmatic', 'true');\n\t        js.onload = function () {\n                const playerApi = ExCoPlayer.connect(slideShowPlayerId);\n                playerApi.init({});\n\n                playerApi.on('player-load', function(data) {\n                    $('.mar-article-image').remove();\n                    if (window.screen.width > 800) {\n                        $('.article-hero').attr('style', 'order: 1');\n                    }\n                    window.hide_overlay_for_exco = true;\n                });\n            };\n            fjs.parentNode.insertBefore(js, fjs);\n        }(document, 'script', 'exco-player'));\n    }\n    function loadSocials()\n    {\n        const socials = [\n            'https:\/\/platform.twitter.com\/widgets.js',\n            'https:\/\/connect.facebook.net\/en_US\/all.js#xfbml=1',\n            'https:\/\/www.tiktok.com\/embed.js',\n        ];\n        socials.forEach((social) => {\n            var script = document.createElement('script');\n            script.src = social;\n            script.async = true;\n            document.getElementsByTagName('head')[0].appendChild(script);\n        });\n    }\n})();\n<\/script><\/p>\n<p><em> \u2018 The preceding article may include information circulated by third parties \u2019 <\/em><\/p>\n<p><em> \u2018 Some details of this article were extracted from the following source www.thenational.scot \u2019 <\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Camilla was pictured with the Harry Potter author as the pair met during the royal family&#8217;s visit to Scotland for the annual Holyrood Week. They reportedly discussed the importance of young people having access to books. The Queen during an audience with JK Rowling, at the Palace of Holyroodhouse in Edinburgh (Image: Jane Barlow \/ [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":2482290,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"jnews-multi-image_gallery":[],"jnews_single_post":[],"jnews_primary_category":[],"jnews_social_meta":[],"footnotes":""},"categories":[43],"tags":[],"class_list":["post-2482289","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-royalty"],"jetpack_featured_media_url":"https:\/\/celebrity.land\/en\/wp-content\/uploads\/2026\/06\/JK-Rowling-meets-the-Queen-in-Holyroodhouse-Palace-in-Edinburgh.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/celebrity.land\/en\/wp-json\/wp\/v2\/posts\/2482289","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/celebrity.land\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/celebrity.land\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/celebrity.land\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/celebrity.land\/en\/wp-json\/wp\/v2\/comments?post=2482289"}],"version-history":[{"count":1,"href":"https:\/\/celebrity.land\/en\/wp-json\/wp\/v2\/posts\/2482289\/revisions"}],"predecessor-version":[{"id":2482291,"href":"https:\/\/celebrity.land\/en\/wp-json\/wp\/v2\/posts\/2482289\/revisions\/2482291"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/celebrity.land\/en\/wp-json\/wp\/v2\/media\/2482290"}],"wp:attachment":[{"href":"https:\/\/celebrity.land\/en\/wp-json\/wp\/v2\/media?parent=2482289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/celebrity.land\/en\/wp-json\/wp\/v2\/categories?post=2482289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/celebrity.land\/en\/wp-json\/wp\/v2\/tags?post=2482289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}