programing

Wordpress에서 현재 게시 ID를 사용하여 다음/이전 게시 ID 가져오기

bestprogram 2023. 3. 18. 09:29

Wordpress에서 현재 게시 ID를 사용하여 다음/이전 게시 ID 가져오기

커스텀 next/prev 기능을 작성하여 포스트 정보를 Fancybox 팝업으로 동적으로 표시하고 싶습니다.그래서 PHP를 사용하여 현재 Post에 표시된 내용에 따라 다음 Post ID와 이전 Post ID를 취득해야 합니다.현재의 투고 ID는 알고 있고, 그것을 함수에 송신할 수 있습니다만, 그 ID를 사용해 인접 ID를 취득하는 방법을 알 수 없습니다.

편집: 지금까지의 코드는 다음과 같습니다(동작하지 않음).

<?php
require_once("../../../wp-blog-header.php");

if (isset($_POST['data'])){
    $post_id = $_POST['data'];
}else{
    $post_id = "";
}
$wp_query->is_single = true;
$this_post = get_post($post_id);
$in_same_cat = false;
$excluded_categories = '';
$previous = false;
$next_post = get_adjacent_post($in_same_cat,$excluded_categories,$previous);


$post_id = $next_post->id;
$title = $next_post->post_title;

$dataset = array ( "postid"=>$post_id, "posttitle"=>$title );

//Because we want to use json, we have to place things in an array and encode it for json.
//This will give us a nice javascript object on the front side.

echo json_encode($dataset);


?>

get_adjacent_post()글로벌 사용$post참조 포인트로 하기 때문에, 이것을 치환할 필요가 있습니다.

$this_post = get_post($post_id);

다음과 같이 입력합니다.

global $post;
$post = get_post($post_id);

또한 WordPress는get_next_post()그리고.get_previous_post()를 사용하는 대신 여기서 사용할 수 있습니다.get_adjacent_post()그 모든 주장들을 가지고.최종 제품은 다음과 같습니다.

<?php
require_once("../../../wp-blog-header.php");

if (isset($_POST['data'])){
    $post_id = $_POST['data'];
}else{
    $post_id = "";
}
$wp_query->is_single = true;

global $post;
$post = get_post($post_id);

$previous_post = get_previous_post();
$next_post = get_next_post();

$post_id = $next_post->id;
$title = $next_post->post_title;

$dataset = array ( "postid"=>$post_id, "posttitle"=>$title );

//Because we want to use json, we have to place things in an array and encode it for json.
//This will give us a nice javascript object on the front side.

echo json_encode($dataset);

?>

에서 이전 및 다음 게시물의 ID와 제목에 사용할 키를 잘 모르겠습니다.$dataset어레이, 그러니까 일단은 그대로 두겠습니다.

이걸 작동시키려면 옷을 갈아입어야 했어$next_post->id;로.$next_post->ID;(예: 대문자로 표시)ID.

Wordpress on index.php에서 이렇게 사용했습니다.루프 상단에 삽입했습니다.

<div class="work-post" id="<?php the_ID(); ?>">

그리고 루프 내에서 나는 이것을 사용한다:

        if (isset($_POST['data'])){
            $post_id = $_POST['data'];
        }else{
            $post_id = "";
        }
        $wp_query->is_single = true;

        global $post;
        $post = get_post($post_id);

        $next_post = get_next_post();
        $previous_post = get_previous_post();

        ?>

        <!-- call only if a value exists -->
            <?php if($next_post) : ?>
                <a href="#<?php echo $next_post->ID;?>" class="anchorLink"><div>PREV.</div></a>
            <?php endif; ?>
        <!-- call only if a value exists -->

        <!-- call only if a value exists -->
            <?php if($previous_post) : ?>
                <a href="#<?php echo $previous_post->ID;?>" class="anchorLink"><div>NEXT</div></a>
            <?php endif; ?>
        <!-- call only if a value exists -->`

이건 내 암호야, 잘 작동했어$post_id는 현재 게시 ID입니다.

function get_previous_post_id( $post_id ) {
    // Get a global post reference since get_adjacent_post() references it
    global $post;
    // Store the existing post object for later so we don't lose it
    $oldGlobal = $post;
    // Get the post object for the specified post and place it in the global variable
    $post = get_post( $post_id );
    // Get the post object for the previous post
    $previous_post = get_previous_post();
    // Reset our global object
    $post = $oldGlobal;
    if ( '' == $previous_post ) 
        return 0;
    return $previous_post->ID; 
} 

function get_next_post_id( $post_id ) {
    // Get a global post reference since get_adjacent_post() references it
    global $post;
    // Store the existing post object for later so we don't lose it
    $oldGlobal = $post;
    // Get the post object for the specified post and place it in the global variable
    $post = get_post( $post_id );
    // Get the post object for the next post
    $next_post = get_next_post();
    // Reset our global object
    $post = $oldGlobal;
    if ( '' == $next_post ) 
        return 0;
    return $next_post->ID; 
} 

그럼 그냥 기능만 호출해예:

echo get_previous_post_id( $current_id );
echo get_next_post_id( $current_id );

행운을 빕니다.

언급URL : https://stackoverflow.com/questions/6324421/getting-next-previous-post-id-using-current-post-id-in-wordpress