2015-04-14 7 views
5

Ich möchte eine Abfrage Variable zu allen Abfragen aus einer bestimmten Domäne hinzufügen.WordPress query_var nach Domäne

Zum Beispiel, mydomain.com und proxydomain.com beide zeigen die gleiche WordPress-Website, aber für Benutzer über proxydomain.com besuchen, würde ich gerne in der Lage sein, ihre Abfragen anders zu behandeln.

Außerdem möchte ich einige verschiedene CSS-Stile für Besucher, die über proxydomain.com kommen, anwenden.

Ich dachte, ich könnte nach dem query_var suchen und Klassen basierend auf dem Vorhandensein dieser Variable anwenden.

+0

kopiert und was genau die Frage? – motto

+0

Es ist NICHT das, wonach Sie gefragt haben (und als solches mache ich einen Kommentar statt einer Antwort), aber Sie könnten einfach $ _SERVER ['REMOTE_HOST'] verwenden, um die Anfragen zu erhalten und Vergleiche darauf auszuführen. –

+1

dh if ($ _ SERVER [ 'REMOTE_HOST'] === 'proxydomain.com') {// einige proxydomain bestimmte Dinge tun oder eine Variable zuweisen} –

Antwort

10

Dies ist der Code in Ihre functions.php Datei hinzuzufügen:

add_filter('body_class', 'domain_as_body_class'); 
function domain_as_body_class($classes) { 
    $classes[] = sanitize_title($_SERVER['SERVER_NAME']); 
    return $classes; 
} 

Es ist die hygienisiert Domain Ihrer Website fügt (dh mydomain-com oder proxydomain-com) als Klasse des body Tag Ihrer Seiten, so dass Sie zielen können die relative Klasse für benutzerdefinierte Stile.

aktualisieren

Für die Fragen, die Sie eine Funktion wieder in functions.php wie könnte hinzufügen:

function is_proxydomain() { 
    return 'proxydomain.com' == $_SERVER['SERVER_NAME']; 
} 

und dann verwenden, wenn auf einer Abfrage benötigt:

if(is_proxydomain()) { 
    $args = array(
     // arguments for proxydomain.com 
    ); 
} else { 
    $args = array(
     // arguments for mydomain.com 
    ); 
} 

$query = new WP_Query($args); 
1

Ich mag die Antwort von d79 für den ersten Teil.

Für die Abfragen, ich denke, es wäre besser, WP_Query-Klasse (d. H. WP_Query_Custom) zu erweitern und eine Kopie für jede Domäne zu haben. Dann können Sie die Datei, die Sie benötigen, basierend auf der Domäne in der Datei functions.php laden, so dass Sie Ihre Anrufe in Zukunft nicht überall ändern müssen, wo Sie WP_Query_Custom verwenden, auch wenn Sie weitere Domänen und verschiedene Versionen hinzufügen müssen WP_Query_Custom.

//in functions.php 
$mydomain = str_replace('.', '_', $_SERVER['SERVER_NAME']); 
require_once("path/to/my/classes/$mydomain/WP_Query_Custom.php"); 

//In each path/to/my/classes/$mydomain/WP_Query_Custom.php 

class WP_Query_Custom extends WP_Query { 

function __construct($args = array()) { 
    // Force these args 
    $args = array_merge($args, array(
     'post_type' => 'my_custom_post_type', 
     'posts_per_page' => -1, // Turn off paging 
     'no_found_rows' => true // Optimize query for no paging 
    )); 

    add_filter('posts_where', array($this, 'posts_where')); 


    parent::__construct($args); 

    // Make sure these filters don't affect any other queries 
    remove_filter('posts_where', array($this, 'posts_where')); 
} 



function posts_where($sql) { 
    global $wpdb; 
    return $sql . " AND $wpdb->term_taxonomy.taxonomy = 'my_taxonomy'"; 
} 
} 

Das Beispiel-Klasse wird von extending WP_Query

+0

Sie sollten offensichtlich für die Datei Existenz testen, wie 'code' if (file_exists ("path/to/my/classes/$ mydomain/WP_Query_Custom.php")) {// Last } else {// Griff Fehler } 'code' – appartisan

Verwandte Themen