Показывать только опубликованные сообщения нестандартного типа с пользовательскими метабоксами на странице архива WordPress - PullRequest
0 голосов
/ 02 июня 2018

Я использую сообщение SitePoint , чтобы создать серию публикаций с настраиваемым типом записи и иметь пользовательские поля для номера серии публикаций.

Ниже приведена функция, обеспечивающая список всех публикаций, опубликованных вконкретная таксономия.Проблема в том, что он также перечисляет удаленные и скрытые сообщения:

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");

Как я могу исключить удаленные и скрытые сообщения из этого списка.

1 Ответ

0 голосов
/ 02 июня 2018

Замените ваш код следующим кодом.

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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...