1

Итак, у меня есть сайт с примерно 6 пользовательскими типами сообщений. Три из этих типов сообщений привязаны к единой пользовательской таксономии.Одиночная таксономия, привязанная к нескольким типам сообщений. Вопрос

Я хотел бы иметь возможность в тегу list_cats боковой панели и выплюнуть URL, как ../%post_type%/%taxonomy%/ и иметь это вас к taxonomy-% систематики% .php шаблон и возвращать только результаты % post_type%.

я могу создать условный, которая будет читать текущую % post_type% и стиль правильно один раз в taxonomy-% таксономия% .php файла. Мне нужно какое-то направление по наиболее эффективному методу изменения URL-адреса, чтобы передать запрос % post_type%.

Заранее спасибо. Я искал пару дней без четкого ответа.

Так вот мои слабые попытки решения пока они один большой СБОЙ Это базируется обсуждение найденного на rlmseo.com муравья ответа здесь.

Попытка добавить тип записи переменной для использования в запросе:

тренировочные площадки является таксономия. Попытка добавить переменный, которую можно использовать для фильтрации таксономии по типу записи в систематике-практика-areas.php

function add_query_vars($aVars) { 
    $aVars[] = "cust_pt_var"; // represents the name of the custom post type as shown in the URL 
    return $aVars; 
} 

// hook add_query_vars function into query_vars 
add_filter('query_vars', 'add_query_vars');  

function add_rewrite_rules($aRules) { 
    $aNewRules = array('practice-areas/([^/]+)/pt/([^/]+)/?$' => 'index.php?practice-areas=$matches[1]&cust_pt_var=$matches[2]'); 
    $aRules = $aNewRules + $aRules; 
    return $aRules; 
} 

// hook add_rewrite_rules function into rewrite_rules_array 
add_filter('rewrite_rules_array', 'add_rewrite_rules') 

Попытка передать переменный запрос в переписывании

Пытается добавить типы сообщений (портфолио & клиентов), а также термин таксономии областей практики для запроса при перезаписи.

function add_rewrite_rules($aRules) { 
    $aNewRules = array('portfolio/practice-areas/([^/]+)/?$' => 'index.php?post_type=portfolio&practice-areas=$matches[1]'); 
    $aNewRules = array('clients/practice-areas/([^/]+)/?$' => 'index.php?post_type=clients&practice-areas=$matches[1]'); 
    $aRules = $aNewRules + $aRules; 
    return $aRules; 
} 

// hook add_rewrite_rules function into rewrite_rules_array 
add_filter('rewrite_rules_array', 'add_rewrite_rules') 

ответ

0

Вы должны быть в состоянии выполнить это, изменив правила перезаписи РГ:

add_action('init', 'ss_permalinks'); 
function ss_permalinks() { 
    add_rewrite_rule(
     'page/remove/([^/]+)/?', 
     'index.php?pagename=page&service=$matches[1]', 
     'top' 
); 
} 
add_filter('query_vars', 'ss_query_vars'); 
function ss_query_vars($query_vars) { 
    $query_vars[] = 'removeid'; 
    return $query_vars; 
} 

Это является неполной, и вы должны изменить целевой URL и управлять собой, но это является основой , Повторно сохраните настройки постоянной ссылки после реализации. page - это слизня страницы, указывающая на то, когда пользователь обращается к этому URL-адресу (в данном случае domain.com/page/remove/432), а $matches[1] должен быть номером после remove/ в URL-адресе. Это число доступно переменной, указанной позже, $query_vars[] = 'removeid';/'$ removeid' на шаблоне целевой страницы будет номером в URL-адресе, если это указано.

+0

ли $ матчи [1] должны быть числом? – jroakes

+0

Нет - мое регулярное выражение (ржавое выражение) является ржавым, но я думаю, что он также возьмет строку. – Gavin

+0

Мне не удалось заставить это работать после многих попыток использования этого кода. Я попробовал аналогичный метод с rlmseo.com с теми же результатами. Пожалуйста, взгляните на мой пересмотренный пост, когда вы получите мгновение. – jroakes

0

Хорошо, поэтому я собрал переписать все вместе и пошел с решением $ _POST. Он работает очень хорошо, и в моем URL нет провалов.

Put в Destination Страница:

<?php 
    $myvar = $_POST['formVar']; 
    query_posts($query_string . '&post_type='.$myvar); 
    ?> 

Помещенный в возникновении Страница:

<!-- The Form: Put this form somewhere on the page: --> 

    <form method=post name="post_form" action=""> 
    <input type="hidden" name="formVar" value=""> 
    </form> 


<!-- The URL: Here I am assigning the Destination URL to a variable. This can be whatever you want the destination page to be. --> 

    <?php      
    $dest_url = get_bloginfo('url').'/practice-areas/'. $category->slug; 
    ?> 


<!-- The Link: Here we are assigning 'portfolio' to 'formVar' and setting the form 'action' to the $dest_url value. The title stuff is irrelevant here--> 

    <a href="" onclick="document.post_form.formVar.value='portfolio'; document.post_form.action ='<?php $dest_url; ?>'; document.post_form.submit(); return false" title ="<?php sprintf(__("View all posts in %s"), $category->name); ?>" > 
Смежные вопросы