Як змінити структуру постійної посилання для користувацького типу публікації та її систематики?


11

Це репост попереднього питання, яке у мене було, але я люблю зараз детальніше розбиратися, щоб мати змогу повністю вирішити це питання.

Отже, знову (звичайні) повідомлення змінювати постійну посилання так само просто, як перейти в Налаштування> Постійне посилання та змінити його на все, що вам подобається, наприклад, широко використовуване %category%/%postname%.html. Це все працює. Якби це було настільки просто для користувальницького типу публікації, і це таксономії.

Отже, це те, що я люблю робити.

  1. http://mywordpress.com/portfolio.html - Відображення всіх публікацій у всіх категоріях.
  2. http://mywordpress.com/portfolio/music/ - Відображення всіх публікацій у цій категорії.
  3. http://mywordpress.com/portfolio/music/trance/ - Відображення всіх публікацій у цій (дочірній) категорії.
  4. http://mywordpress.com/portfolio/music/trance/Tiesto.html - Відображення публікації.

Що я отримав поки що:

  1. Спочатку я створив custom_post_typeназваний проект та taxonomy проект_категорії .
  2. Я створив портфоліо сторінки і надав йому шаблон сторінки, в якому будуть перераховані всі post_type = projectпублікації. Як я можу додати .html до постійної посилання на сторінки? Тепер він посилається на http://mywordpress.com/portfolio, хоча я хочу http://mywordpress.com/portfolio.html . Це має вирішити перше питання.
  3. Тоді все стане складніше, тому що ми не знаємо заздалегідь, скільки підкатегорій там, можливо, їх навіть немає. Тож структура, за якою ми йдемо, є portfolio/(CATEGORY PATH FROM TOP TO CHILD)/post.html. Я все ще застряг у цій точці. Я думаю, що я повинен якось додати останню категорію до шляху і передати це уздовж project_category , що повинно призвести до файлу taxonomy.php, де я можу його правильно обробити.
  4. Я ні з цим не займався, але %postname%.htmlв кінці чогось має бути щось спільне.

Я сподіваюсь, що моя проблема зрозуміла, і що є сміливі розробники, які допоможуть мені вирішити цю проблему, яка вже триває мене зайнятою протягом чотирьох ПОВНИХ днів!


1
Рішення, яке я дав в останньому запитанні, мав би діяти саме так, якби ви правильно його реалізували. Єдине, що ви не можете отримати частину html
Manny Fleurmond,

Так, але він був заблокований певним шляхом, тож лише категорія / підкатегорія / сторінка, хоча не може бути підкатегорій або навіть більше. Це більш динамічно.
Марк

Або я її не реалізував належним чином;)
Марк

Відповіді:


4

Гаразд, я думаю, що у мене може бути рішення. Я поняття не маю, чи це правильний спосіб досягти цього, але, на сьогодні, це єдине, що, здається, працює.

add_filter('rewrite_rules_array', 'mmp_rewrite_rules');

function mmp_rewrite_rules($rules) {
    $newRules                               = array();
    $newRules['portfolio/(.+)/(.+?).html$'] = 'index.php?project=$matches[2]';
    $newRules['portfolio/(.+)/?$']          = 'index.php?project_category=$matches[1]'; 

    return array_merge($newRules, $rules);
}


add_filter('request', 'mmp_rewrite_request');

function mmp_rewrite_request($vars) {
    if (isset($vars['project_category'])) {
        if (strpos($vars['project_category'], '/') !== false) {
            $categories = explode('/', $vars['project_category']);
            $vars['project_category'] = $categories[count($categories) - 1];
        }
    }

    return $vars;
}

Фільтр запитів - це хороший спосіб фільтрування, якщо ми запитуємо категорію (насправді термін) та посаду. Це дозволяє додавати лише одне правило перезапису та отримувати сторінку публікації, будь то посада в категорії, підкатегорії чи взагалі немає.
ZalemCitizen

1

2 різні методи:

* Дивіться примітки внизу цієї публікації.


наприклад, ви хочете мати таку структуру постійної посилання:
/ MAIN_CATEGORY / SUB_CAT_2 / Another_SUBCAT / my-post

Спочатку вам може знадобитися встановити постійні посилання на /% category% /% postname% . Тоді...




МЕТОД 1:

створити стандартні категорії ( MAIN_CATEGORY, SUB_CAT_1, and etc..), а також зареєструвати МИТНИЙ ПОСТ, в тому числі цього параметра:

'taxonomies'    => array('category'..)

і скористайтеся цими кодами для зміни постійних посилань: https://wordpress.stackexchange.com/a/195643/33667
Потім, після публікації МИТНИЙ ПОСТ (якщо додається під категорією), URL буде:
example.com/MAIN_CATEGORY/SUB_CAT_1/my-post



МЕТОД 2:

(ps цей метод не рекомендується, якщо ви плануєте публікувати сотні чи тисячі публікацій)

зареєструйте митну пошту (названу MAIN_CATEGORY), включаючи ці параметри:

    "supports"      => array('page-attributes'......
    "hierarchical"  => true,

потім публікуйте власні публікації на зразок цього: (тобто публікуйте декілька користувацьких публікацій , названих . Після цього, коли ви публікуєте іншу публікацію, але вибирайте як батьківську.
SUB_CAT_2, SUB_CAT_1..SUB_CAT_2





ps
1) Якщо ви новачок, перегляньте: Зареєструйте CUSTOM POST та Зареєструйте CUSTOM POST за допомогою TAXONOMY
2), якщо вам знадобиться функція пошуку для підрівневих рівнів, то використовуйте користувальницький пошуковий запит


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.