programing

Wordpress: 태그로 게시물을 가져오려고 합니다.

goodsources 2023. 3. 22. 21:10
반응형

Wordpress: 태그로 게시물을 가져오려고 합니다.

자동으로 몇 개의 게시물을 만들고 태그를 추가하는 코드를 작성했습니다."All posts" 관리 패널에 태그가 표시되어 게시물 "Tag" 링크를 클릭하면 태그가 있는 게시물만 볼 수 있습니다.

단, $wp_query를 사용하여 쓰고 있는 플러그인에서는 원하는 태그가 있는지 없는지에 관계없이 투고의 완전한 리스트가 반환됩니다.

제 코드는 다음과 같습니다.

// Now retrieve all items matching this brand name . . .
$query=new WP_Query(array('posts_per_page=5', array('tag' => array($brand_name))));

// The Loop
while ( $query->have_posts() ) : $query->the_post();
    echo '<li>';
    the_title();
    echo '</li>';
endwhile;

// Reset Post Data
wp_reset_postdata();

5만 반환하도록 지시하면 10개의 결과가 나옵니다.실제로는 태그가 붙어있는 총수이기 때문에 2개의 포스트만 돌려받을 수 있습니다.

웹에서 찾아보면 같은 문제를 겪고도 해결책이 없는 사람들이 많은 것 같아요.태그를 지정하는 방법을 10개 정도 시도했습니다만, 반환된 투고 수가 틀렸다는 것은 제가 완전히 틀렸거나 버그가 있다는 것을 의미합니다.도움이 된다면 워드프레스 버전은 3.4.1입니다.

워드프레스 프로가 이걸 밝혀줄 수 있나요?

잘 부탁드립니다!

답변은 https://codex.wordpress.org/Template_Tags/get_posts 에서 찾을 수 있습니다.

다음 예제에서는 'tax_query'를 사용하여 'genere' 사용자 지정 분류법에서 'jazz' 태그가 지정된 게시물을 표시합니다.

$args = array(
    'tax_query' => array(
        array(
            'taxonomy' => 'genre',
            'field' => 'slug',
            'terms' => 'jazz'
        )
    )
);
$postslist = get_posts( $args );

그래서 너를 위해서

$args = array( 
        'posts_per_page' => 5,
        'tax_query'      => array(
            array(
                'taxonomy'  => 'post_tag',
                'field'     => 'slug',
                'terms'     => sanitize_title( $brand_name )
            )
        )
    );

$postslist = get_posts( $args );

이거 드셔보세요

$original_query = $wp_query;
$wp_query = null;
$args = array('posts_per_page' => 5, 'tag' => $brand_name);
$wp_query = new WP_Query($args);

if (have_posts()) :
    while (have_posts()) : the_post();
        echo '<li>';
        the_title();
        echo '</li>';
    endwhile;
endif;

$wp_query = null;
$wp_query = $original_query;
wp_reset_postdata();

코드로 다음을 시도합니다.

$query=new WP_Query(array('posts_per_page=5', 'tag' => $brand_name));

다음 대신:

$query=new WP_Query(array('posts_per_page=5', array('tag' => array($brand_name))));

상세한 것에 대하여는, https://codex.wordpress.org/Class_Reference/WP_Query#Tag_Parameters 를 참조해 주세요(최근의 중복 투고에 기재되어 있습니다).

주의: $brand_name은 문자열 배열 또는 쉼표로 구분된 값 등을 사용할 수 있으며, 위의 코드가 작동합니다.

또는 다음을 시도합니다.

$myPosts = get_posts(array('tag' => $brand_name));

https://codex.wordpress.org/Template_Tags/get_posts 를 참조해 주세요.

시간이 좀 걸렸어요이렇게 하면 한 게시물에서 같은 태그 중 하나를 사용하여 무작위로 3개의 게시물을 얻을 수 있습니다.

$post = get_post(); // if you don't have $post->ID already
$tag_ids = wp_get_post_tags( $post->ID, array( "fields" => "ids" ) ); // current tags
$args = array(
    "numberposts" => 3,
    "orderby" => "rand",
    "post__not_in" => array( $post->ID ), //exclude current
    "post_type" => "article", // defaults to "post", also note "any" option
    "tax_query" => array(
        array(
            "taxonomy" => "post_tag",
            "field"    => "term_id",
            "terms"    => $tag_ids
        )
    )
);
$posts = get_posts( $args ); // getting posts

그래도 동작하지 않으면 에 의해 생성된SQL 요구를 표시할 수 있습니다.$args문제를 더 해결하려면

$q = new WP_Query($args);
echo $q->request;

언급URL : https://stackoverflow.com/questions/12272997/wordpress-trying-to-get-posts-by-tag

반응형