/ / Jak ukryć wpis o tej samej kategorii - wordpress

Jak ukryć wpis o tej samej kategorii - wordpress

czy jest ktoś, kto wie, jak ukryć post, który ma tę samą kategorię?

Mam Post 1, Post 2, Post 3, które mają tę samą kategorię. Czy mogę po prostu wyświetlić ostatni post (post 1) na mojej stronie głównej i ukryć inny post (post 2 i post 3)

Odpowiedzi:

0 dla odpowiedzi № 1

Jednym ze sposobów jest posiadanie trzech oddzielnych wp_queries.

//Query 1
$args1 = array(
"cat"                    => "1",
"nopaging"               => true,
"posts_per_page"         => "1",
);    $query_1 = new WP_Query( $args1 );
if ( $query_1->have_posts() ) {
while ( $query_1->have_posts() ) {
$query_1->the_post();
// put content here
}
} else {
// no posts found
}
wp_reset_postdata();

//Query 2
$args2 = array(
"cat"                    => "2",
"nopaging"               => true,
"posts_per_page"         => "1",
);    $query_2 = new WP_Query( $args2 );
if ( $query_2->have_posts() ) {
while ( $query_2->have_posts() ) {
$query_2->the_post();
// put content here
}
} else {
// no posts found
}
wp_reset_postdata();

//Query 3
$args3 = array(
"cat"                    => "3",
"nopaging"               => true,
"posts_per_page"         => "1",
);    $query_3 = new WP_Query( $args3 );
if ( $query_3->have_posts() ) {
while ( $query_3->have_posts() ) {
$query_3->the_post();
// put content here
}
} else {
// no posts found
}
wp_reset_postdata();

0 dla odpowiedzi nr 2
    <?php
$args = array(
"numberposts" => 1,
"offset" => 0,
"category" => 0,
"orderby" => "post_date",
"order" => "DESC",
"post_type" => "post",
"post_status" => "draft, publish, future, pending, private",
"suppress_filters" => true
);

// the query
$the_query = new WP_Query( $args );?>

<?php if ( $the_query->have_posts() ) : ?>

<!-- pagination here -->

<!-- the loop -->
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<h2><?php the_title(); ?></h2>
<?php endwhile; ?>
<!-- end of the loop -->

<!-- pagination here -->

<?php wp_reset_postdata(); ?>

<?php else : ?>
<p><?php _e( "Sorry, no posts matched your criteria." ); ?></p>
<?php endif; ?>

Dodaj identyfikator kategorii do „kategorii”. zmień te linki, aby uzyskać więcej informacji. https://codex.wordpress.org/Class_Reference/WP_Query https://codex.wordpress.org/Function_Reference/wp_get_recent_posts


0 dla odpowiedzi № 3

Możesz to osiągnąć zmieniając zapytanie strony głównej pre_get_posts hak.

Oto kod:

function txt_domain_get_distinct_post_id()
{
$post_ids = [];

//getting all non empty category
$categories = get_terms("category", array(
"orderby" => "count",
"hide_empty" => 0,
));

foreach ($categories as $category)
{
$args = array(
"posts_per_page" => -1,
"category" => $category->term_id,
"exclude" => $post_ids,
"orderby" => "date",
"order" => "DESC",
"post_type" => "post",
"post_status" => "publish"
);
//getting post from a specific category
$postlist = get_posts($args);
foreach ($postlist as $post)
{
if (!in_array($post->ID, $post_ids))
{
//this will only select one post form each category
$post_ids[] = $post->ID;
break;
}
}
}
return $post_ids;
}


add_filter( "pre_get_posts", "txt_domain_filter_get_posts" );

function txt_domain_filter_get_posts($query)
{
if (is_home() && $query->is_main_query())
{
$post_ids = txt_domain_get_distinct_post_id();
$query->set("post__in", $post_ids);
}
return $query;
}

Kod znajduje się w pliku function.php aktywnego motywu potomnego (lub motywu). Lub w dowolnych plikach php z wtyczkami.


Odniesienie: