Я пытаюсь изменить постоянную ссылку моего CPT 'book-name', сделав его дочерним по умолчанию для страницы 'genre-name'.Я не использую метабокс по разным причинам, поэтому единственным решением является ACF.
Так что в CPT у меня будет селектор для родительской страницы - 'genre-name'.
Проблема в том, что ACF возвращает объект wp_post.Как я могу работать с этим, чтобы внести изменения в постоянную ссылку и сделать ее родителем моего CPT?
Я следовал учебнику, в котором использовались мета-блоки, но сейчас я потерян ....
Многое перепробовал, вот что у меня сейчас:
function rewrite_url_for_books() {
add_rewrite_tag('%book%', '([^/]+)', 'book=');
add_permastruct('book', '/%genre%/%book%', false);
add_rewrite_rule('^([^/]+/([^/]+/?', 'index.php?book=$matches[2]', 'top');
}
add_action( 'init', 'rewrite_url_for_book' );
function permalink_for_book($permalink, $post, $leavename) {
$post_id = $post->ID;
if($post->post_type != 'book' || empty($permalink) || in_array($post->post_status, array('draft', 'pending', 'auto-draft')))
return $permalink;
$genre = get_field('genre_field');
setup_postdata($genre);
$parent = $post->post_parent;
$parent_post = get_post($parent);
$permalink = str_replace('%genre%', $parent_post->post_name, $permalink);
return $permalink;
}
add_filter('post_type_link', 'permalink_for_book', 10, 3);
Это объект wp_post
WP_Post (object) => [
// Default data returned by WP_Post
ID => int,
post_author => string,
post_name => string,
post_type => string,
post_title => string,
post_date => string,
post_date_gmt => string,
post_content => string,
post_excerpt => string,
post_status => string,
comment_status => string,
ping_status => string,
post_password => string,
post_parent => int,
post_modified => string,
post_modified_gmt => string,
comment_count => string,
menu_order => string,
// Additional data I want to add
extra_data_1 => array,
more_data_key => string,
another_added => string
]