Question

Je ne suis pas sûr de solution ici fonctionnerait mieux comme une solution, mais ce que je cherche est juste un moyen simple d'entrer dans un domaine en option par un METABOX sur l'écran d'édition de page, puis il suffit de sélectionner un modèle dans la page par défaut les utilisations de modèles.

Je suppose qu'il doit y avoir un moyen simple d'y parvenir en ajoutant manuellement un enregistrement de nom de A pour le nouveau domaine et pointant à la même adresse IP du site principal utilise et ensuite par un code permettant des demandes de ce nouveau domaine charger un ID de poste spécifique tout en utilisant le modèle de page spécifique que vous avez sélectionné.

Je voudrais que la page soit accessible pour les domaines et que le nouveau domaine utiliserait le modèle défini.

Comment cela peut-il être fait?

mise à jour Je suppose que l'autre moyen serait d'abord configurer une seule page de sorte qu'il peut avoir son propre sous-domaine en utilisant certains ont été construits dans le code utilisé pour wordpress multisite? En d'autres termes, si un sous-domaine personnalisé peut être affecté à un identifiant de poste spécifique, un enregistrement CNAME à ce sous-domaine pourrait être fixé pour le nouveau domaine ... Je ne sais pas la meilleure façon d'y arriver.

Était-ce utile?

La solution

Ce code vous permettra de définir une valeur méta personnalisée, et si le nom de domaine (ou sous-domaine si vous modifiez le code) vont correspondre, la requête sera modifiée pour correspondre ce poste. Le modèle de page ne sera utilisé pour cette demande, et non pour les demandes via l'URL « normale ».

Cela ne change pas les liens sur cette page: devraient-ils aller sur le site « normal » ou séjour dans le sous-domaine

Comment résoudre ce côté DNS est probablement une question serveur de défaut .

define( 'WPSE4558_STANDARD_SERVER', 'www.example.com' );
define( 'WPSE4558_META_KEY', 'domainname' );

add_filter( 'request', 'wpse4558_request' );
function wpse4558_request( $query_vars )
{
    $query_vars['is_subdomain_request'] = false;
    if ( WPSE4558_STANDARD_SERVER != $_SERVER['SERVER_NAME'] ) {
        $query_vars['meta_key'] = WPSE4558_META_KEY;
        // This can also be just the subdomain, if you edit it
        $query_vars['meta_value'] = $_SERVER['SERVER_NAME'];
        $query_vars['is_subdomain_request'] = true;

    }
    return $query_vars;
}

add_action( 'parse_query', 'wpse4558_parse_query' );
function wpse4558_parse_query( &$wp_query )
{
    if ( $wp_query->get( 'is_subdomain_request' ) ) {
        $wp_query->is_home = false;
        $wp_query->is_page = true;
        $wp_query->is_singular = true;
    }
}

add_filter( 'page_template', 'wpse4558_page_template' );
function wpse4558_page_template( $template )
{
    global $wp_query;
    $id = $wp_query->get_queried_object_id();
    if( ! $wp_query->get( 'is_subdomain_request' ) && get_post_meta( $id, WPSE4558_META_KEY ) ) {
        // This is a page that has a subdomain attached, but the current request is not via that subdomain
        // So use the normal template hierarchy, ignore the page template
        $templates = array();
        $pagename = $wp_query->get_queried_object()->post_name;
        if ( $pagename ) {
            $templates[] = "page-$pagename.php";
        }
        if ( $id ) {
            $templates[] = "page-$id.php";
        }
        $templates[] = "page.php";
        $template = locate_template( $templates );
    }
    return $template;
}

Autres conseils

Réponse Mise à jour

D'accord, il semble que vous voulez une option dans le panneau d'écriture qui vous permettra de composer un poste sur le site A et, le cas échéant, publier également ce poste au site B. Cela ressemble à un projet intéressant et il devrait être possible en utilisant WordPress et XMLRPC.

Voici quelques exemples de code . En combinant le code dans cet article avec une boîte de méta personnalisée, vous devriez être en mesure d'atteindre votre objectif. Bonne chance!

Voici quelques bonnes ressources:

N.B.. Pour assurer les mises à jour apportées aux postes sont syndiqués, vous pouvez également stocker post_id du poste sur le site distant dans un champ personnalisé. Vous devriez probablement mettre en œuvre un délai de quelques minutes avant que le poste à distance initial est envoyé (je sais que je fais inévitablement des changements immédiatement après la publication de presque tout, mais peut-être juste moi).


Réponse originale Ci-dessous


(i) .htaccess de configuration avec mod_rewrite pour masquer l'URL poste, (ii) diffuser vos messages sur plusieurs sites en utilisant RSS avec wp_insert_post ou (iii) créer un dossier dans votre thème appelé post-redirect et ajoutez les fichiers suivants à elle:

  • post-redirect-meta.php - Créer une boîte de méta appelé "Post URL de redirection" avec une zone de saisie de texte qui sauvera à votre table postmeta.

  • post-redirect.php - Créer un modèle de thème appelé "Post Redirect" qui sous condition (basée sur le protocole HTTP referrer) exécute une redirection 301 en utilisant l'URL cible enregistrée dans le « Post URL de redirection » boîte de méta sur votre page après édition. Cela vous permettra d'afficher le message original dans un cadre sur le nouveau domaine.

Selon vos besoins énoncés, ceux-ci semblent comme les solutions les plus simples, mais il est loin d'être clair que ceci est votre intention (par exemple, qu'est-ce que « Je voudrais que la page soit accessible pour les deux domaines "moyenne? sont à la fois des sites en cours d'exécution WP? Quelle est la relation d'affaires entre les deux sites?). Il serait utile que vous nous avez expliqué plus clairement le résultat final que vous essayez d'atteindre et une liste de vos préoccupations importantes la plupart. Quelle que soit votre réponse est à cela, si possible, s'il vous plaît expliquer aussi « why ».

Le code pour y parvenir est pas compliqué, mais avant de passer par la peine, s'il vous plaît préciser ce que vous essayez d'accomplir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top