Domanda

Non sono sicuro che la soluzione qui avrebbe funzionato meglio come una soluzione, ma quello che sto cercando è solo un modo semplice per entrare in un dominio opzionale attraverso un METABOX sullo schermo pagina di modifica e poi basta selezionare un modello dalla pagina di default modelli wordpress usi.

Io parto dal presupposto ci deve essere un modo semplice per ottenere questo risultato aggiungendo manualmente un record di nome A per il nuovo dominio e puntare allo stesso IP del sito principale sta usando e poi attraverso un codice permettere le richieste a questo nuovo dominio caricare un ID specifico messaggio, mentre utilizzando il modello di pagina specifica selezionata.

mi piacerebbe per la pagina sia accessibile sia per i domini e solo il nuovo dominio dovrebbe utilizzare il modello definito.

Come si può fare?

aggiornamento Credo che l'altro modo sarebbe quello di prima installazione di una singola pagina in modo che possa avere il suo sottodominio utilizzando alcuni costruita nel codice di wordpress utilizzato per più siti? In altre parole, se un sottodominio personalizzato potrebbe essere assegnato a un ID specifico messaggio, allora un record CNAME per questo sottodominio potrebbe essere fissato per il nuovo dominio ... Non è sicuro il modo migliore per raggiungere questo obiettivo.

È stato utile?

Soluzione

Questo codice vi permetterà di impostare un valore meta personalizzato, e se il nome di dominio (o sottodominio se si modifica il codice) lo confronta, la query sarà cambiato per abbinare quel post. Il modello di pagina sarà utilizzato solo per tale richiesta, non per le richieste tramite l'URL "normale".

Questo non cambia i link su quella pagina: dovrebbero andare al sito "normale" o soggiorno nel sottodominio

Come a risolvere questo sul lato DNS è probabilmente un server Fault domanda .

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;
}

Altri suggerimenti

risposta Aggiornato

D'accordo, suona come si desidera un'opzione nel pannello di scrittura che vi permetterà di comporre un post su sito e, opzionalmente, pubblicare anche che post per i suoni del sito B. come un progetto interessante e dovrebbe essere possibile utilizzando WordPress e XMLRPC .

Ecco qualche esempio di codice . Combinando il codice in questo articolo con una scatola di meta personalizzato, si dovrebbe essere in grado di raggiungere il tuo obiettivo. Buona fortuna!

Qui ci sono alcuni più buone risorse:

NB. Per garantire gli aggiornamenti apportate ai post sono sindacato, si consiglia inoltre di memorizzare il post_id del post sul sito remoto in un campo personalizzato. Probabilmente si dovrebbe anche implementare un ritardo di alcuni minuti prima del post remota iniziale viene inviato (so che inevitabilmente apportare modifiche subito dopo la pubblicazione di qualsiasi cosa, ma che potrebbe essere solo me).


risposta originale è inferiore a


(i) .htaccess installazione con mod_rewrite per mascherare l'URL inviati, (ii) di sindacato i tuoi messaggi attraverso più siti utilizzando RSS con wp_insert_post o (iii) creare una cartella all'interno del vostro tema chiamato post-redirect e aggiungere i seguenti file ad esso:

  • post-redirect-meta.php - Creare una casella di meta chiamato "Post Redirect URL" con una casella di testo che salverà al vostro tavolo postmeta.

  • post-redirect.php - Creare un modello di tema chiamato "Post Redirect", che condizionalmente (basato sul HTTP referrer) esegue un reindirizzamento 301 utilizzando l'URL di destinazione salvato nel "Post redirect URL" meta di dialogo sulla vostra pagina di post modifica. Questo vi permetterà di visualizzare il post originale in una cornice sul nuovo dominio.

In base ai requisiti indicati, queste sembrano le soluzioni più semplici, ma è tutt'altro che evidente che questo è il vostro intento (ad esempio, cosa significa " Vorrei per la pagina per essere accessibile per entrambi i domini "media? sono entrambi siti in esecuzione WP? Qual è il rapporto d'affari tra i due siti?). Sarebbe utile se più chiaramente spiegato il risultato finale che si sta tentando di raggiungere e un elenco delle preoccupazioni più importanti. Qualunque sia la vostra risposta è a questo, se possibile, anche spiegare "why".

Il codice per raggiungere questo obiettivo non è complicato, ma prima di passare attraverso la fatica, si prega di chiarire che cosa si sta cercando di realizzare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a wordpress.stackexchange
scroll top