web-dev-qa-db-fra.com

obtenir du contenu du domaine principal à sous-domaine à WP_Query

J'ai un site web principal avec 2 sous-domaines.

www.example.com

www.space.example.com

www.products.example.com

Je souhaite publier des articles sur mon site Web principal en utilisant des catégories pour les trier.

par exemple, un article utilisant la catégorie "espace" et un article utilisant la catégorie "produits".

En utilisant wp-query et le type de message personnalisé, je souhaite afficher sur ma page space.example.com les articles de la catégorie "espace" et sur mon produits.exemple.com les articles de la catégorie "produits".

Je sais que cela fonctionne en utilisant wp-querie avec catégorie sur un site Web simple, sans sous-domaines:

$query = new WP_Query( 'category_name=space' ); 

ou

$query = new WP_Query( 'category_name=products' );

mais existe-t-il un moyen de le faire avec des sous-domaines?

Je ne trouve aucune solution sur le net.

quelqu'un peut-il m'aider avec ça ?

merci beaucoup

1
user2882154

Ce que vous pouvez faire est de configurer un filtre pre_get_posts() dans le fichier functions.php du thème des sous-domaines afin de limiter les publications à la catégorie souhaitée ...

function my_subdomain_category( $query ) 
{
    if ( $query->is_main_query() ) 
    {
        $query->set( 'cat', '123' ); // use the categoryID for space or products
    }
}
add_action( 'pre_get_posts', 'my_subdomain_category' );
1
BA_Webimax

merci @BA_Webimax

j'ai trouvé la solution en utilisant cette requête dans les pages de mes sous-domaines pour obtenir des données à partir de mes pages de domaine principales. L'ID de blog du domaine principal est (1). et sous-domaine, par exemple, sont 2 et 3.

<?php switch_to_blog(1); ?>
<?php restore_current_blog(); ?>

ressembler à ceci pour afficher sur une page d'un sous-domaine, tous les titres des articles de la catégorie "produits" de mon ID de domaine 1:

<?php

switch_to_blog(1); //define the domain containing the posts
$args = array('category_name' => 'products' , 'orderby' => 'title', 'order' => 'ASC' );

$myposts = get_posts( $args );
foreach ( $myposts as $post ) : setup_postdata( $post ); ?>

<?php the_title(); ?>

<?php endforeach;
restore_current_blog(); //switch back to the actual domain
wp_reset_postdata();?>

j'espère que ça va aider! très utile lorsque vous travaillez avec des sous-domaines. cela fonctionne également pour obtenir des données de champs personnalisés et de champs personnalisés avancés ...

meilleur

1
user2882154