GeneratePress 테마에서 포스팅 상단 부근 서론 바로 아래에 최근 글이 자동으로 3~5개 정도 들어가게 할 수 있는지에 대한 질문이 네이버 카페에 올라와서 효과적으로 원하는 위치에 최신 글 등의 PHP 코드를 삽입하는 방법에 대해 잠시 생각해보았습니다.
워드프레스 포스팅 내 원하는 위치에 최근글을 자동으로 넣기
최근 글을 넣으려는 경우 1) List category posts와 같은 플러그인을 사용하여 숏코드로 넣거나 2) PHP로 직접 최근 글 리스트를 만들어서 넣는 방법을 생각해 볼 수 있습니다.
또한, 어떤 방법으로 포스트 내의 특정 위치에 숏코나 PHP 코드를 추가할지에 대해 고려해야 합니다.
GeneratePress 테마에서는 훅을 사용하여 제목 아래 등 특정 위치에 코드를 추가할 수 있습니다.
하지만 첫 번째 문단 혹은 두 번째 문단 아래, 첫 번째 H2 소제목 위 등과 같이 상세한 위치 지정은 코딩이 필요하므로 간단하지 않습니다.
최신 글 리스트를 첫 번째 문단 뒤와 같이 보다 상세하게 배치하고 싶은 경우에는 Ad Inserter 플러그인을 사용할 수 있습니다.
위의 그림과 같이 php 옵션을 선택하여 활성화하면 PHP 코드를 광고 코드 대신 삽입할 수 있습니다.
경우에 따라 상기 그림과 다르게 php 버튼이 없는 경우도 있습니다. 그런 경우에는 테마 편집기가 비활성화되었을 수 있습니다.
보안을 위해 테마 편집기는 비활성화하는 것이 바람직합니다. 테마 편집기를 비활성화한 경우, wp-config.php 파일에서 [**define('DISALLOW_FILE_EDIT', true);**] 라인을 삭제하거나 주석 처리하시기 바랍니다.
최신 글을 나열하고 싶은 경우 다음과 같은 PHP 코드를 추가할 수 있습니다.
<?php
// Define the WP Query parameters
$args = array(
'post_type' => 'post',
'posts_per_page' => 3
);
// Create a new instance of WP_Query
$the_query = new WP_Query( $args );
// The Loop
if ( $the_query->have_posts() ) {
echo '<ol>'; // Start ordered list
while ( $the_query->have_posts() ) {
$the_query->the_post();
?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php
}
echo '</ol>'; // End ordered list
/* Restore original Post Data */
wp_reset_postdata();
} else {
// No posts found
echo 'No recent posts found';
}
?>
상기 코드를 사용하면 최근의 3개 포스트가 표시됩니다.
현재 글을 최신 글 목록에서 제외시키려면 다음과 같은 코드를 사용할 수 있습니다.
<?php
global $post; // Make sure $post is in scope
$current_post_id = $post->ID; // Get current post ID
// Define the WP Query parameters
$args = array(
'post_type' => 'post',
'posts_per_page' => 3,
'post__not_in' => array($current_post_id) // Exclude current post
);
// Create a new instance of WP_Query
$the_query = new WP_Query( $args );
// The Loop
if ( $the_query->have_posts() ) {
echo '<ol>'; // Start ordered list
while ( $the_query->have_posts() ) {
$the_query->the_post();
?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php
}
echo '</ol>'; // End ordered list
/* Restore original Post Data */
wp_reset_postdata();
} else {
// No posts found
echo 'No recent posts found';
}
?>
테스트해 보니 잘 작동하네요.
Ad Inserter에서는 광고 위치를 상세하게 설정할 수 있으므로, 위치를 적절히 조정하시기 바랍니다.
참고
https://avada.tistory.com/3049
https://avada.tistory.com/2897
https://avada.tistory.com/3071