Php 在WordPress存档页面中仅显示带有自定义元数据库的已发布自定义类型文章

Php 在WordPress存档页面中仅显示带有自定义元数据库的已发布自定义类型文章,php,wordpress,custom-post-type,Php,Wordpress,Custom Post Type,我正在使用创建一个具有自定义文章类型的文章系列,并为文章系列编号设置自定义框 下面的函数提供了在特定分类法中发布的所有帖子的列表。问题是它还列出了已删除和隐藏的帖子: function sitepoint_post_series_content_filter($content) { $slug = "sitepoint-postseries"; if ($slug != get_post_type()) { return $content; } $post_series_list =

我正在使用创建一个具有自定义文章类型的文章系列,并为文章系列编号设置自定义框

下面的函数提供了在特定分类法中发布的所有帖子的列表。问题是它还列出了已删除和隐藏的帖子:

function sitepoint_post_series_content_filter($content) {
$slug = "sitepoint-postseries";
if ($slug != get_post_type()) {
    return $content;
}

$post_series_list = get_option("post_series_" . get_the_ID() . "_ids", "");
$post_series_list_array = explode(',', $post_series_list);

$post_series_serial_number = array();

foreach ($post_series_list_array as $key => $value) {
    $serial_number = get_post_meta($value, "sitepoint-postseries-serial-number", true);
    $post_series_serial_number[$value] = $serial_number;
}

asort($post_series_serial_number);

$html = "<ul class='sitepoint-post-series'>";

foreach ($post_series_serial_number as $key => $value) {
    $post = get_post($key);
    $title = $post->post_title;
    $html = $html . "<li><h3><a href='" . get_permalink($key) . "'>" . $title . "</a></h3></li>";
}

$html = $html . "</ul>";
return $content . $html;
}

add_filter("the_content", "sitepoint_post_series_content_filter");
function sitepoint\u post\u series\u content\u filter($content){
$slug=“sitepoint postseries”;
如果($slug!=get\u post\u type()){
返回$content;
}
$post_series_list=get_选项(“post_series”。get_the_ID().“_ID”,”);
$post_series_list_数组=分解(“,”,$post_series_list);
$post_series_serial_number=array();
foreach($key=>value的post\u系列\u列表\u数组){
$serial\u number=get\u post\u meta($value,“sitepoint postseries序号”,true);
$post_series_serial_number[$value]=$serial_number;
}
asort($post\u series\u serial\u number);
$html=“
    ”; foreach($key=>value的post\u系列\u序列号){ $post=获取post($key); $title=$post->post\u title; $html=$html.“
  • ”; } $html=$html.“
”; 返回$content.$html; } 添加内容过滤器(“内容过滤器”、“站点点”发布内容过滤器);

如何从列表中排除已删除和隐藏的帖子。

用下面的代码替换您的代码

function sitepoint_post_series_content_filter($content) {
    $slug = "sitepoint-postseries";
    if ($slug != get_post_type()) {
        return $content;
    }

    $post_series_list = get_option("post_series_" . get_the_ID() . "_ids", "");
    $post_series_list_array = explode(',', $post_series_list);

    $post_series_serial_number = array();

    foreach ($post_series_list_array as $key => $value) {
        $serial_number = get_post_meta($value, "sitepoint-postseries-serial-number", true);
        $post_series_serial_number[$value] = $serial_number;
    }

    asort($post_series_serial_number);

    $finalArray = array();
    foreach ($post_series_serial_number as $keyPostID => $valueID) {
        if('publish' == get_post_status($keyPostID)){
            $finalArray[$keyPostID] = $keyPostID;
        }
    }


    $html = "<ul class='sitepoint-post-series'>";

    foreach ($finalArray as $key => $value) {
        $post = get_post($key);
        $title = $post->post_title;
        $html = $html . "<li><h3><a href='" . get_permalink($key) . "'>" . $title . "</a></h3></li>";
    }

    $html = $html . "</ul>";
    return $content . $html;
}

add_filter("the_content", "sitepoint_post_series_content_filter");
function sitepoint\u post\u series\u content\u filter($content){
$slug=“sitepoint postseries”;
如果($slug!=get\u post\u type()){
返回$content;
}
$post_series_list=get_选项(“post_series”。get_the_ID().“_ID”,”);
$post_series_list_数组=分解(“,”,$post_series_list);
$post_series_serial_number=array();
foreach($key=>value的post\u系列\u列表\u数组){
$serial\u number=get\u post\u meta($value,“sitepoint postseries序号”,true);
$post_series_serial_number[$value]=$serial_number;
}
asort($post\u series\u serial\u number);
$finalArray=array();
foreach($keyPostID=>$valueID的post\U序列号){
if('publish'==获取发布状态($keyposted)){
$finalArray[$keyPostID]=$keyPostID;
}
}
$html=“
    ”; foreach($finalArray作为$key=>$value){ $post=获取post($key); $title=$post->post\u title; $html=$html.“
  • ”; } $html=$html.“
”; 返回$content.$html; } 添加内容过滤器(“内容过滤器”、“站点点”发布内容过滤器);
你能回显get_post_状态(get_the_ID())并让我知道发布或发布的内容吗?即使是已删除的帖子也会获得发布你能再次检查帖子类型slug吗。如果您的帖子被删除,则其状态必须为垃圾。出现问题,请检查slug,而不是get_the_ID(),请使用静态ID检查发生了什么。slug是好的。创建此文章系列和保存文章时,整个代码中一定有一些错误。如果删除的文章在垃圾箱中,则文章标题可见;如果我从垃圾中永久删除,存档列表中会生成一篇空帖子。你检查过我的最后评论吗?我知道我能解决的问题是什么。该站点没有bug我最近更改了代码。我敢肯定这一次一定对你有用。