web-dev-qa-db-fra.com

Comment laisser un message avoir son propre nom de domaine

Je ne sais pas quelle solution ici conviendrait le mieux, mais ce que je recherche, c’est un moyen simple de saisir un domaine optionnel via une metabox sur l’écran de modification de page, puis de sélectionner simplement un modèle dans la liste de modèles de page par défaut utilisée par wordpress .

Je suppose qu’il doit exister un moyen simple d’y parvenir en ajoutant manuellement un enregistrement de nom A pour le nouveau domaine et en le pointant sur la même adresse IP utilisée par le site Web principal, puis, via du code, autoriser les demandes adressées à ce nouveau domaine à charger un fichier spécifique. Identifiez-vous tout en utilisant le modèle de page que vous avez sélectionné.

J'aimerais que la page soit accessible aux deux domaines et que seul le nouveau domaine utilise le modèle défini.

Comment cela peut-il être fait?

mis à jour J'imagine que l'autre solution consisterait tout d'abord à configurer une page afin qu'elle puisse avoir son propre sous-domaine en utilisant du code WordPress intégré utilisé pour les sites multisites? En d'autres termes, si un sous-domaine personnalisé pouvait être affecté à un identifiant de publication spécifique, un enregistrement cname de ce sous-domaine pourrait être défini pour le nouveau domaine ... Vous ne savez pas quel est le meilleur moyen d'y parvenir.

2
NetConstructor.com

Ce code vous permettra de définir une méta-valeur personnalisée. Si le nom de domaine (ou le sous-domaine si vous modifiez le code) lui correspond, la requête sera modifiée pour correspondre à cette publication. Le modèle de page ne sera utilisé que pour cette demande, pas pour les demandes via l'URL "normale".

Cela ne change pas les liens sur cette page: doivent-ils aller sur le site "normal" ou rester dans le sous-domaine?

La façon dont vous résolvez cela du côté DNS est probablement une question de défaillance du serveur .

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;
}
1
Jan Fabry

Réponse mise à jour

OK, il semble que vous souhaitiez une option dans le panneau d’écriture qui vous permettra de composer un article sur le site A et, éventuellement, de publier cet article sur le site B. Cela ressemble à un projet intéressant et il devrait être possible d’utiliser WordPress et XMLRPC .

Voici un exemple de code . En combinant le code de cet article avec une boîte méta personnalisée, vous devriez pouvoir atteindre votre objectif. Bonne chance!

Voici d'autres bonnes ressources:

N.B. Pour vous assurer que les mises à jour que vous apportez aux articles sont syndiquées, vous pouvez également vouloir stocker le post_ID de l'article sur le site distant dans un champ personnalisé. Vous devriez probablement également mettre en place un délai de quelques minutes avant l'envoi de la publication à distance initiale (je sais que j'apporte inévitablement des modifications immédiatement après la publication de presque tout, mais c'est peut-être juste moi).


La réponse originale est inférieure à


Soit (i) configurez .htaccess avec mod_rewrite pour masquer l'URL du message, (ii) syndiquez vos messages sur plusieurs sites à l'aide de RSS avec wp_insert_post ou (iii) créez un dossier dans votre thème appelépost- redirigezet ajoutez-y les fichiers suivants:

  • post-redirect-meta.php - Créez une méta-boîte appelée "URL de redirection" avec une zone de saisie de texte qui sera sauvegardée dans votre table postmeta.

  • post-redirect.php - Crée un modèle de thème appelé "Post Redirect" qui exécute de manière conditionnelle (en fonction du référent HTTP) une redirection 301 à l'aide de l'URL cible enregistrée dans la rubrique "Post Redirect". URL "meta box sur votre page de post-modification. Cela vous permettra d'afficher le message d'origine dans un cadre sur le nouveau domaine.

En fonction de vos exigences, cela semble être la solution la plus simple, mais il est loin d’être clair que telle est votre intention (par exemple, qu'est-ce que "J'aimerais que la page soit accessible aux deux domaines"signifie? Les deux sites utilisent-ils WP? Quelle est la relation commerciale entre les deux sites?). Il serait utile que vous expliquiez plus clairement le résultat final que vous essayez d'atteindre et une liste de vos préoccupations les plus importantes. Quelle que soit votre réponse à cette question, veuillez expliquer si possible le "pourquoi".

Le code pour y parvenir n’est pas compliqué, mais avant de passer à travers les choses, veuillez clarifier ce que vous essayez d’accomplir.

1
joelhaus