Задать вопрос
  • Возможно ли добавить в url записи post_typeB slug записи post_typeA?

    @aleksmeh Автор вопроса
    aleksmeh, решение нашел. Заменил в фильтре rwmb_get_value на get_post_meta()

    function my_add_rewrite_rules_turs() {
      add_rewrite_tag('%turs%', '([^/]+)','turs=');
      add_permastruct('turs', '/countries/%countries%/turs/%turs%', false);
      add_rewrite_rule('^countries/([^/]+)/turs/([^/]+)/?','index.php?turs=$matches[2]','top');
    }
    add_action( 'init', 'my_add_rewrite_rules_turs' );
    
    function my_permalinks_turs($permalink, $post, $leavename) {
      $post_id = $post->ID;
      if($post->post_type != 'turs' || empty($permalink) || in_array($post->post_status, array('draft', 'pending', 'auto-draft')))
       	return $permalink;
      $parent = get_post_meta( $post_id, 'turcountry' , true );
      $parent_post = get_post( $parent );
      $permalink = str_replace('%countries%', $parent_post->post_name, $permalink);
      return $permalink;
    }
    add_filter('post_type_link', 'my_permalinks_turs', 10, 3);
  • Возможно ли добавить в url записи post_typeB slug записи post_typeA?

    @aleksmeh Автор вопроса
    yarovikov, О! Доброго дня! Вы мне уже помогали!)
    country - страна
    tur - тур
    Соответственно в каждой стране несколько туров, в целом для функционала не мешает вообще ни как. Но для SEO нужно, структура сайта, вес передавать и пр.

    Я пытался сделать так, бес использования таксономии:
    // Add our own URL strucutre and rewrite rules
    function my_add_rewrite_rules_turs() {
    	add_rewrite_tag('%turs%', '([^/]+)');
    	add_permastruct('turs', '/countries/%countries%/turs/%turs%', false);
    	add_rewrite_rule('^countries/([^/]+)/turs/([^/]+)/?','index.php?countries=$matches[1]&turs=$matches[2]','top');
    }
    add_action( 'init', 'my_add_rewrite_rules_turs' );
    // Set permalink for Lessons
    function my_permalinks_turs($permalink, $post, $leavename) {
    	$post_id = $post->ID;
    	if($post->post_type != 'turs' || empty($permalink))
    	 	return $permalink;
    	$parent = rwmb_get_value( 'countries' , $post_id );
    	$parent_post = get_post( $parent );
    	$permalink = str_replace('%countries%', $parent_post->post_name, $permalink);
    	return $permalink;
    }
    add_filter('post_type_link', 'my_permalinks_turs', 10, 3);


    Ссылки собираются на страницах нормально, но в sitemap и при автопостинге %countries% не воспринимается и получается ссылка вида /countries//turs/turs->name.
    То есть наверное проблема в my_add_rewrite_rules_turs, но не могу понять какая. Бурженет тоже не знает.
  • Wordpress - add_rewrite_rule и sitemap?

    @aleksmeh Автор вопроса
    Модератор, уважаемый модератор! Понял, исправлюсь!
  • Wordpress - add_rewrite_rule и sitemap?

    @aleksmeh Автор вопроса
    alex-1917, да я не говорю, что wp тормоз. Я занимаюсь им 3 неделю. И разбираюсь в виду поступления задач. Ваша конструктивная критика весьма к месту, но был бы благодарен, хотя бы за направление, не "пешее эротическое", а что почитать бы для решения этой проблемы.

    И да, можно было бы решить всё при помощи таксономии, но в виду функциональности и стоящей задачи, или собственной неосведомленности, не хочется.
  • Wordpress - переадресация по url на другой шаблон single-{post_type}-{other}.php?

    @aleksmeh Автор вопроса
    Большое спасибо!!! Разобрался за 10 минут! До этого предполагал, что нужно искать в стороне add_rewrite_rule!

    Спасибо за помощь и хорошего дня!

    Для отчаявшихся:
    add_filter( 'template_include', 'include_post_type_second' );
    function include_post_type_second( $template ) {
    if ( (in_array('second', explode('/', $_SERVER['REQUEST_URI']))) ) {
    if ( $new_template = locate_template( array( 'single-post_type-second.php' ) ) )
    $template = $new_template ;
    }
    return $template;
    }