Wordpress - CPT дочерний элемент данной страницы с использованием ACP - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь изменить постоянную ссылку моего 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
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...