WordPress query_var por dominio

3 minutos de lectura

avatar de usuario
HWD

Me gustaría agregar una variable de consulta a todas las consultas provenientes de un determinado dominio.

Por ejemplo, mydomain.com y proxydomain.com muestran el mismo sitio de WordPress, pero para los usuarios que visitan a través de proxydomain.com, me gustaría poder manejar sus consultas de manera diferente.

Además, me gustaría aplicar algunos estilos CSS diferentes para los visitantes que ingresan a través de proxydomain.com.

Estaba pensando que podría verificar query_var y aplicar clases basadas en la presencia de esa variable.

  • y cual es la pregunta exactamente?

    – mirza

    17 abr 2015 a las 23:08

  • NO es lo que pediste (y como tal, lo estoy convirtiendo en un comentario en lugar de una respuesta), pero podrías usar fácilmente $_SERVER[‘REMOTE_HOST’] para obtener las solicitudes y ejecutar comparaciones sobre eso.

    – josh.chavanne

    17 abr 2015 a las 23:08

  • es decir, si ($_SERVIDOR[‘REMOTE_HOST’]===’proxydomain.com’){ //hacer algunas cosas específicas del dominio proxy o asignar una variable}

    – josh.chavanne

    17 de abril de 2015 a las 23:09


avatar de usuario
d79

Este es el código para agregar a su functions.php expediente:

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

Agrega el dominio desinfectado de su sitio (es decir, mydomain-com o proxydomain-com) como clase de body etiqueta de sus páginas, para que pueda apuntar a la clase relativa para estilos personalizados.

Actualizar

Para las consultas, podría agregar una función nuevamente en functions.php me gusta:

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

Y luego úselo cuando sea necesario en una consulta:

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

$query = new WP_Query( $args );

avatar de usuario
apartidista

Me gusta la respuesta de d79 para la primera parte.

Para las consultas, creo que sería mejor extender la clase WP_Query (es decir, WP_Query_Custom) y tener una copia para cada dominio. Luego, puede cargar el archivo que necesita según el dominio en el archivo functions.php, por lo que no necesita cambiar en el futuro sus llamadas en todos los lugares donde usa WP_Query_Custom, incluso si necesita agregar más dominios y diferentes versiones de WP_Query_Personalizado.

//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'";
}
}

La clase de ejemplo se copia de extendiendo WP_Query

  • Obviamente, debe probar la existencia del archivo, como code if( file_exists( “ruta/a/mis/clases/$midominio/WP_Query_Custom.php” ) ){ //cargar }else{ //manejar error } code

    – apartisano

    22 de abril de 2015 a las 8:55


¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad