이 늦은 답변입니다,하지만 난 alesub
이 준 답의 깨끗한 버전을주고 싶어.
function wp21418_append_to_post_name() {
// Checks to see if the option images_updated has been set or has a value of true.
if (get_option('images_updated') === 'true') :
return;
endif;
// get all attachment posts.
$attachments = get_posts([
'post_type' => 'attachment',
'post_status' => 'inherit',
'name' => $p->slug,
'posts_per_page' => -1,
]);
// For each attachment, loop and update the post_name
foreach($attachments as $p){
$attachment = array(
'ID' => $p->ID,
'post_name' => $p->post_name.'-image'
);
// Update the post into the database
wp_update_post($attachment);
}
// Once everything is looped, add the option to the database.
add_option('images_updated', 'true');
}
add_action('after_setup_theme', 'wp21418_append_to_post_name');
이 기능은 테마가 설정된 직후에 액션 훅에서 실행됩니다. 첫 번째 줄은 데이터베이스에 옵션이 있는지 확인합니다. images_updated
. 그 옵션이 존재하면, 우리는 그 함수를 보증하고 어떤 처리도하지 않는다. 그렇지 않으면 옵션이 존재하지 않으면 함수를 실행하고 끝에 옵션을 설정합니다.
이렇게하면 한 번만 실행됩니다. 새로 고침 후 함수를 제거 할 필요가 없습니다. 다시 실행하려면 상단의 if
문을 간단히 제거하면됩니다. 주의해야로 : 이미 -image
을 경우에도이 post_names
의 끝에서 또 다른 -image
을 추가 할 것입니다하고 (예를 들어, -image-image
)
그 상황에 대한 검사 이상의 파일 이름이있을 수 있습니다. 누군가가 정말로 필요로하는 경우 그 답변을 업데이트합니다.
이전에 "-1"이 추가 된 것을 보았습니다.하지만 여전히 내 이야기에서 그런 일이 일어나지 않은 이유는 아직도 혼란 스럽습니다. WP는 페이지의 제목에 따라 충돌하는 슬러그/퍼멀 링크를 자동 생성했습니다. 마찬가지로, 테마로 미디어 파일이 자신의 페이지를 갖도록 허용/비 허용하는 방법은 무엇입니까? 나는 이것을 의도적으로 가능하게하지 않았다. – emersonthis
attachment.php (http://codex.wordpress.org/images/1/18/Template_Hierarchy.png).업로드 된 파일은 이미 생성 된 슬러그와 충돌해서는 안되며, 시스템 자체를 보호합니다 (이미지에 접미사를 추가합니다). 그래서 무슨 일이 일어 났는지 확신 할 수 없으며, 때때로 URL 구조를 변경하여 퍼머 링크를 새로 고쳐야하는 경우도 있습니다. – Wyck