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


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.