Wp_Query的“$args”中的唯一帖子显示多个帖子

时间:2019-09-04 作者:Rak Arthus

当我单击div时,我找不到权限参数来只显示一个类别的一篇文章。我用Ajax调用该文章,并将其显示在div弹出窗口中。也许这些论点是不够的,或者问题来自另一个方面?但当我在循环中回显get\\u the\\u id时,它是帖子的正确id。但是,它会显示类别中的所有帖子。另一个问题是,如果我没有指定类别(名称或id),它会显示Wordpress的所有帖子。这两个问题只有在我调用Ajax中的帖子时才会出现。

function more_content() {

    $the_post_id = the_ID(); // $_POST[\'the_ID\'];
    $args = array(
        \'post_type\' => \'post\',
        \'category_name\' => \'materials\',
        \'p\' => $the_post_id

    );

    $ajax_query = new WP_Query($args);
    $the_excerpt;
    $the_content;

    if ( $ajax_query->have_posts() ) : while ( $ajax_query->have_posts() ) : $ajax_query->the_post();

          $the_excerpt = the_excerpt();
          $the_content = the_content();

    endwhile;
    endif; 
    echo $the_excerpt;
  echo "<div style=\'color:white; font-size:40px;\'>",$the_post_id,"</div>";
    echo $the_content;

    wp_reset_postdata();

    die();
}

1 个回复
SO网友:Ted Stresen-Reuter

我很确定类别参数不能与p. 在documentation it says: “显示与特定类别关联的帖子。”而且没有一个例子像您尝试的那样将一个类别与一篇文章相结合。

相反,我认为您需要使用这样的分类查询:

$args = [
    \'post_type\' => \'post\', 
    \'p\'=>(int)$_POST[\'the_ID\'], 
    \'tax_query\' => [
        [
            \'taxonomy\'=>\'category\',
            \'field\'=>\'slug\',
            \'terms\'=>\'materials\'
        ]
    ]
];
试一试,如果它解决了你的问题,记住把它标记为答案。

此外,请确保您获得了正确的ID。在您提供的代码示例中,the_ID() 绝对不是你想要的。the_ID() 将ID值回显到输出。你可能想要的是get_the_ID() 但在这种情况下,即使这样也会出错(根据GET请求的输入定义的ID检索单个帖子)。

此外,如果您要从$\\u POST或$\\u GET中提取ID,请确保在查询中使用它之前对其进行清理(尽管我很确定WordPress在运行查询之前也会清理输入,但您永远都不会太安全)。

相关推荐

‘POSTS_PER_PAGE’=>‘10’不显示任何帖子

每个人我已经创建了一个自定义的\\u post\\u类型;function create_post_type_veranstaltungen() { register_post_type(\'veranstaltungen\', array( \'label\' => __(\'Veranstaltungen\'), \'public\' => true, \'show_ui\' => true,&#