Измените постоянную ссылку для вложения wordpress
Мои вложения в настоящее время переписаны сhttp://localhost/?attachment_id=3
чтобыhttp://localhost/images/image-title
используя ответ @Bainternet здесь.
$new_rules['images/(\d*)$'] = 'index.php?attachment_id=$matches[1]';
Однако wordpress по-прежнему ссылается на ссылку по умолчанию http://localhost/?attachment_id=3
. Функции Wordpress, такие как the_permalink, get_attachment_url, get_attachment_image_src и т. Д. все используют формат по умолчанию http://localhost/?attachment_id=3
.
Я могу получить доступ к изображению, как и предполагалось, если я вручную наберу в переписанном формате http://localhost/images/image-title
.
Как я могу заставить wordpress использовать мою пользовательскую перепись для постоянной ссылки, особенно на странице администратора?
РЕДАКТИРОВАТЬ: переформулированный вопрос для конкретности и корректности:
Как мне переопределить the_permalink
, чтобы использовать формат /images/image-title
вместо /?attachment_id=ID
?
Я могу получить заголовок изображения, используя $post->post_title
.
РЕДАКТИРОВАТЬ #2:
Для тех, кто будет читать этот вопрос в будущем, я счел лучшим использовать $post->post_name
для ссылки, чтобы обеспечить уникальность./images/post_title
2 answers
Ваше правило работает с идентификатором вложения, поэтому я не уверен, как вы используете заголовок, но ответ в любом случае почти идентичен. Фильтр, который вам нужен, это attachment_link
:
function wpd_attachment_link( $link, $post_id ){
$post = get_post( $post_id );
return home_url( '/images/' . $post->post_title );
}
add_filter( 'attachment_link', 'wpd_attachment_link', 20, 2 );
Измените $post->post_title
на $post->ID
, чтобы поместить идентификатор в URL-адрес вместо заголовка.
Какой-нибудь другой способ изменить URL-адрес постоянной ссылки
function ro_remove_attachment_title_caption( $attach_id ){
$args = array(
'ID' => $attach_id,
'post_name' => "permalinkName",
);
wp_update_post( $args );
}
add_action( 'add_attachment', 'ro_remove_attachment_title_caption', 10, 1 );
Это работает в контексте плагина: удалите ЦИФРОВУЮ КАМЕРУ OLYMPUS из заголовка и заголовка путем загрузки изображения