{"id":228260,"date":"2022-10-15T10:45:00","date_gmt":"2022-10-15T07:45:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228260"},"modified":"2022-11-09T01:33:47","modified_gmt":"2022-11-08T22:33:47","slug":"looge-wordpressis-virtuaalne-fail-koos-wordpressi-mitme-saidi-toega","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/looge-wordpressis-virtuaalne-fail-koos-wordpressi-mitme-saidi-toega\/","title":{"rendered":"Looge WordPressis virtuaalne fail koos WordPressi mitme saidi toega"},"content":{"rendered":"\n<p>Hiljuti t\u00f6\u00f6tasin WordPressi mitme saidi eksemplari kallal ja vajasin, et igal saidil (praegusel juhul mitmekeelsel) oleks oma ainulaadne d\u00fcnaamiliselt loodud saidikaart. Loosin need saidikaardid, luues WordPressis <strong>virtuaalseid faile .<\/strong><\/p>\n<p>Selles artiklis kirjeldatakse, kuidas luua virtuaalset faili ja seej\u00e4rel tagada, et sellele virtuaalsele failile ei p\u00e4\u00e4seks juurde teie WordPressi mitme saidi eksemplari igal saidil.<\/p>\n<h2>\u00dcmberkirjutamise reeglite seadistamine<\/h2>\n<p>Virtuaalse faili loomiseks peame k\u00f5igepealt looma m\u00f5ned \u00fcmberkirjutamise reeglid, et WordPress teaks, mida teha virtuaalse URL-iga, kus me tahame, et meie fail ilmuks.<\/p>\n<p>J\u00e4rgmine n\u00e4ide loob kaks saidiplaani URL-i sitemap.xml ja sitemap-fr.xml.<\/p>\n<pre><code>function wholesomecode_sitemap_rewrites() {\n    global $wp;\n    $wp-&gt;add_query_var( 'map' );\n\n    add_rewrite_rule( 'sitemap.xml$', 'index.php?map=sitemap', 'top' );\n    add_rewrite_rule( '^sitemap-fr.xml$', 'index.php?map=sitemap-fr', 'top' );\n}\nadd_action( 'init', 'wholesomecode_sitemap_rewrites', 99 );\n<\/code><\/pre>\n<p>Pange t\u00e4hele, kuidas lisame p\u00e4ringumuutuja &#8216;map&#8217; ja seej\u00e4rel vastendame sellele p\u00e4ringule oma saidiplaani nime.<\/p>\n<h2>Kanooniliste \u00fcmbersuunamiste v\u00e4ltimine<\/h2>\n<p>M\u00f5nikord, kui teil on kanoonilised \u00fcmbersuunamised lubatud (n\u00e4iteks pistikprogrammi, n\u00e4iteks Yoast SEO kaudu), proovib WordPress lisada teie URL-i l\u00f5ppu kaldkriipsu. Selle funktsiooni abil saame seda v\u00e4ltida.<\/p>\n<pre><code>function wholesomecode_prevent_slash_on_map_variable( $redirect) {\n    if (get_query_var( 'map')) {\n        return false;\n    }\n    return $redirect;\n}\nadd_filter( 'redirect_canonical', 'wholesomecode_prevent_slash_on_map_variable' );\n<\/code><\/pre>\n<h2>Virtuaalse faili sisu loomine<\/h2>\n<p>N\u00fc\u00fcd peame l\u00f5puks seadistama virtuaalsed failid ise. Selleks saame konksu k\u00fclge <code>template_include<\/code>haakida. Siin on meie saidiplaanide v\u00e4ga lihtsustatud versioon.<\/p>\n<p>Pange t\u00e4hele, kuidas me kasutame kaardimuutujat, et m\u00e4\u00e4rata, millist virtuaalset faili soovime kuvada.<\/p>\n<pre><code>function wholesomecode_sitemap_contents( $template) {\n    $map = get_query_var( 'map' );\n    if (! empty( $map)) {\n        header( 'Content-type: text\/xml' );\n        if ('sitemap' === $map) {\n            ?&gt;\n            &lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n            &lt;sitemapindex xmlns=\"http:\/\/www.sitemaps.org\/schemas\/sitemap\/0.9\"&gt;\n                &lt;sitemap&gt;\n                    &lt;loc&gt;https:\n                &lt;\/sitemap&gt;\n            &lt;\/sitemapindex&gt;\n            &lt;?php\n        } elseif ('sitemap-fr' === $map) {\n            ?&gt;\n            &lt;sitemapindex xmlns=\"http:\/\/www.sitemaps.org\/schemas\/sitemap\/0.9\"&gt;\n                &lt;sitemap&gt;\n                    &lt;loc&gt;https:\n                &lt;\/sitemap&gt;\n            &lt;\/sitemapindex&gt;\n            &lt;?php\n        }\n        die();\n    }\n    return $template;\n}\nadd_action( 'template_include', 'wholesomecode_sitemap_contents' );\n<\/code><\/pre>\n<h3>Boonus: lisage oma virtuaalsesse URL-i staatilised failid<\/h3>\n<p>\u00dclaltoodud n\u00e4ide oli v\u00e4ga lihtne, kuid saate staatilised failid nendesse virtuaalsetesse URL-idesse vastendada, t\u00f5mmates nende sisu faili. N\u00e4iteks siin kasutame juurkataloogis &#8216;maps&#8217; olevaid saidikaarte ja kaasame need d\u00fcnaamiliselt kaardimuutuja alusel.<\/p>\n<pre><code>function wholesomecode_sitemap_from_file( $template) {\n    $map = get_query_var( 'map' );\n    if (! empty( $map)) {\n        if (! function_exists( 'get_home_path')) {\n            include_once ABSPATH. '\/wp-admin\/includes\/file.php';\n        }\n        header( 'Content-type: text\/xml' );\n        include get_home_path(). 'maps\/'. $map. '.xml';\n        die;\n    }\n    return $template;\n}\nadd_action( 'template_include', 'wholesomecode_sitemap_from_file' );\n<\/code><\/pre>\n<h2>\u00dcmberkirjutamise reeglite loputamine<\/h2>\n<p>Viimane asi, mida peate tegema, enne kui n\u00e4ete oma virtuaalseid faile, on \u00fcmberkirjutamise reeglite loputamine. Kui olete \u00fclaltoodud juhised kleepinud, <code>functions.php<\/code>on parim toimimisviis avada <code>Settings &gt; Permalinks<\/code>oma WordPressi juhtpaneelil ja salvestada oma p\u00fcsilingid uuesti. Kuid kui loote pistikprogrammi, saate aktiveerimiskonksu k\u00fclge haakida, nii et need k\u00e4ivituvad automaatselt, kui oma pistikprogrammi aktiveerite:<\/p>\n<pre><code>register_activation_hook( __FILE__, 'flush_rewrite_rules' );\n<\/code><\/pre>\n<p>Loputusreeglite kohta leiate <a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/flush_rewrite_rules\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">lisateavet WordPressi koodeksist<\/a>, et leida muid meetodeid, mis v\u00f5ivad teie stsenaariumi jaoks olla asjakohased.<\/p>\n<p>Meie prantsuskeelne saidikaart<\/p>\n<p>See t\u00f6\u00f6tab suurep\u00e4raselt! Virtuaalsete failide loomisega pole probleeme, kuid kui ma k\u00fclastaksin saidi prantsusekeelset versiooni ja otsiksin saidiplaani (nt: <a href=\"https:\/\/mattwatson.codes\/fr\/sitemap.xml\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">mattwatson.codes\/fr\/sitemap.xml<\/a> ), n\u00e4eksin ma saidiplaani ingliskeelset versiooni. Pole ideaalne.<\/p>\n<h2>Unikaalsed virtuaalsed failid WordPressi mitmesaidis<\/h2>\n<p>Lahendus virtuaalsete failide takistamiseks teie teistes WordPressi mitme saidi eksemplarides on \u00fcsna lihtne. K\u00f5ik, mida peate \u00fcmberkirjutamise seadistamisel tegema, on kontrollida, kas praegu vaadatav sait on see, millel soovite seda virtuaalset faili kuvada.<\/p>\n<pre><code>function wholesomecode_sitemap_rewrites() {\n    global $wp;\n    $wp-&gt;add_query_var( 'map' );\n\n    if (get_current_blog_id() == '1') {\n        add_rewrite_rule( 'sitemap.xml$', 'index.php?map=sitemap', 'top' );\n    }\n\n    if (get_current_blog_id() === get_id_from_blogname( 'fr')) {\n        add_rewrite_rule( '^sitemap-fr.xml$', 'index.php?map=sitemap-fr', 'top' );\n    }\n}\nadd_action( 'init', 'wholesomecode_sitemap_rewrites', 99 );\n<\/code><\/pre>\n<p>Kui teil on WordPress Multisite v\u00e4lja l\u00fclitatud, siis \u00fclaltoodud funktsioon katkeb, seega v\u00f5iksite <code>get_current_blog_id<\/code>enne selle kasutamist kontrollida, kas see funktsioon on olemas.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/wholesomecode.ltd\" class=\"external external_icon\">wholesomecode.ltd<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hiljuti t\u00f6\u00f6tasin WordPressi mitme saidi eksemplari kallal ja vajasin, et igal saidil (praegusel juhul mitmekeelsel) oleks oma ainulaadne d\u00fcnaamiliselt loodud saidikaart. genereerisin&#8230;<\/p>\n","protected":false},"author":1,"featured_media":223984,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,842,802],"tags":[1165],"class_list":["post-228260","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-opetused","category-php-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/228260","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=228260"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/228260\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/223984"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=228260"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=228260"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=228260"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}