programing

아이디 대신 우편명으로 우편물을 받다

abcjava 2023. 4. 6. 20:44
반응형

아이디 대신 우편명으로 우편물을 받다

네, 현재 이 코드를 가지고 있습니다.

<?php

$post_id = 266;
echo "<div id='widgets-wrapper3'><div id='marginwidgets' style='overflow: auto; max-    width: 100%; margin: 0 auto; border: none !important;'>";
$queried_post = get_post($post_id); 
echo "<div class='thewidgets'>";
echo substr($queried_post->post_content, 0, 500);
echo "<a href='".get_permalink( 26 )."' title='Read the whole post' class='rm'>Read     More</a>";
echo "</div>";

echo "</div></div>";

?>

위의 코드를 보시면 알 수 있듯이, ID로 투고를 받는 것이 루틴이지만, 저의 permalinks는 SEO를 위해 post ID가 아닌 post name으로 바뀝니다.우편물을 우편명으로 받으려면 어떻게 해야 하나요?

여기 있는 누군가가 알아냈으면 좋겠어요.감사해요.

get_page_by_path()

WordPress에는 도움이 될 수 있는 기능이 내장되어 있으며 몇 가지 주의사항을 덧붙입니다.

<?php get_page_by_path( $page_path, $output, $post_type ) ?>

여기 관련 Codex 항목입니다.

투고를 얻으려면 페이지가 아닌 '투고'를 '투고'로 지정하기만 하면 됩니다.$post_type인수, 그리고 보통OBJECT(따옴표 없이) 로서$output다음과 같이 입력합니다.

<?php get_page_by_path( 'my_post_slug', OBJECT, 'post' ) ?>

함수는 일치하는 게시물의 게시 또는 개인 상태를 확인하지 않습니다.찾으시는 아이템이 및 첨부 파일이지만 투고 및 페이지(초안, 개인 투고 등)에 문제가 있을 수 있는 경우 매우 편리합니다.

찾고 있는 페이지이며, 그 페이지가 계층적(즉, 상위 페이지 포함)인 경우 경로 전체를 제공해야 합니다. 즉, 'parent_page_slug/my_page_slug'입니다.

WP_Query / get_posts()

이 중 하나라도 문제가 된다면WP_Query게시물을 받는 수업name:

$found_post = null;

if ( $posts = get_posts( array( 
    'name' => 'my_post_slug', 
    'post_type' => 'post',
    'post_status' => 'publish',
    'posts_per_page' => 1
) ) ) $found_post = $posts[0];

// Now, we can do something with $found_post
if ( ! is_null( $found_post ) ){
    // do something with the post...
}
function get_post_by_name($post_name, $output = OBJECT) {
    global $wpdb;
        $post = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type='post'", $post_name ));
        if ( $post )
            return get_post($post, $output);

    return null;
}

이런 거.

사용하다WP_Query이 함수는 지정된 이름의 첫 번째 게시물을 가져옵니다.null찾을 수 없는 경우:

function get_post_by_name(string $name, string $post_type = "post") {
    $query = new WP_Query([
        "post_type" => $post_type,
        "name" => $name
    ]);

    return $query->have_posts() ? reset($query->posts) : null;
}

기본적으로는 이 유형의 항목이 검색됩니다.post:

get_post_by_name("my-post")

두 번째 인수로 이 값을 다른 값으로 설정할 수 있습니다.

get_post_by_name("my-page", "page")

언급URL : https://stackoverflow.com/questions/12905763/get-post-by-post-name-instead-of-id

반응형