Wordpress: Как да конвертирам генериран URL (постоянна връзка) в красив URL?

В плъгин генерирам пагинирана връзка към категория,
т.е. http://localhost/?cat=17&paged=5. Категорията е известна със slug и id.

Има ли начин този URL адрес да бъде преобразуван в дефинирания от потребителя формат на „хубава постоянна връзка“,
т.е. http://localhost/category/foo/page/5?

(Ако приемем, че работим с Wordpress 2.8/2.9+)

Редактиране: Тъй като има някои недоразумения относно това, което се опитвам да постигна, ето какво имам:

  • ID на категорията
  • Номерът на страницата (т.е. петата страница от архива на тази категория)

С тези данни мога да създам URL адреса към тази страница, който би бил например http://localhost/?cat=17&paged=5, и това работи добре. Проблемът е от визуално естество: ако потребителят е активирал красиви постоянни връзки, тогава това няма да се впише много добре. Въпросът е: Как да получа правилната, красива постоянна връзка (т.е. http://localhost/category/foo/page/5) от (или за) информацията, която имам?

Редактиране 2: Очевидно, ако даден потребител има красиви постоянни връзки деактивирани, тогава няма красиви постоянни връзки. Знам това и това наистина не е предмет на въпроса... За момента нека просто приемем, че потребителят има настройка за произволна постоянна връзка. Генерирам връзка и тя трябва да изглежда така, както потребителят иска.


person sunside    schedule 20.03.2010    source източник
comment
Не можете ли просто да ги промените в панела с опции за постоянни връзки? избиране на „По избор“ и въвеждане на /%postname%/ това ще генерира подобно на това, което имате, освен ако този плъгин не промени URL адресите по някакъв начин?   -  person Marty    schedule 22.03.2010
comment
Страхувам се, че не разбирам смисъла. Моят плъгин не знае нищо за структурата на постоянните връзки, зададена от потребителя. В момента мога да адресирам страницата, към която създавам връзка, само по идентификатор на категория и номер на страница. Това, което търся, е някакъв вид филтър, който модифицира този генериран URL адрес до каквато и да е структура, която потребителят е конфигурирал.   -  person sunside    schedule 22.03.2010
comment
има настройка в администрация-›настройки-›постоянни връзки   -  person    schedule 22.03.2010
comment
@fuzzy lollipop: Знам за тази настройка и това е, което искам да постигна. Сега въпросът е: Как Wordpress прави това, къде е скрита магията и как мога да го използвам (зле) за себе си? :)   -  person sunside    schedule 23.03.2010


Отговори (6)


Разгледахте ли WP_Rewrite?

person Manzabar    schedule 22.03.2010
comment
Да, но не съм сигурен как да го използвам за тази задача. - person sunside; 23.03.2010
comment
Знаете ли за някакви примери как да използвате WP_Rewrite за тази цел? Всичко, което мога да намеря, е как да добавя нови етикети за постоянни връзки и т.н. (Кодексът отново е най-полезен...) - person sunside; 23.03.2010
comment
Съжалявам, но и аз не съм го ползвал. Порових още малко из Codex и се натъкнах на API за Rewrite, може би това ще помогне? codex.wordpress.org/Rewrite_API - person Manzabar; 24.03.2010
comment
За съжаление не. Доколкото разбирам, работи обратното, позволявайки хубава постоянна връзка да бъде анализирана в променливи $_GET. Благодаря много все пак! - person sunside; 25.03.2010

All In One SEO отговаря ли на вашите изисквания? Всъщност купих "професионалната" версия за около $30 USD и си заслужаваше.

person Tony    schedule 22.03.2010
comment
За съжаление не. Изглежда не пренаписва URL адреси. - person sunside; 23.03.2010

Моята инсталация на Wordpress (2.9.2) прави това автоматично - каноничните URL адреси са вградени в Wordpress от известно време. Може би вашият плъгин е деактивиране на тази функция?

person shipshape    schedule 22.03.2010
comment
Не, определено не. (Ако добавите <?php echo 'http://localhost/?cat=17&paged=5'; ?> - или друга подобна връзка - някъде във вашата тема, ще видите проблема.) - person sunside; 23.03.2010
comment
Току-що опитах това с моята тема и Wordpress правилно интерпретира URL адреса и ме пренасочи към правилната страница според моите настройки за постоянна връзка. Използвате ли 2.9.2? - person shipshape; 24.03.2010
comment
Може би не разбирам проблема ви - ако просто повтаряте URL адреса като низ, тогава Wordpress няма да направи нищо с него. Но ако го превърнете във връзка и щракнете върху нея, трябва да бъдете пренасочени към правилната страница. - person shipshape; 24.03.2010
comment
Пренасочването не е проблемът, проблемът е фактът, че изглежда грозно. :) - person sunside; 03.05.2010
comment
Поставете номера на страницата, който искате, в променлива, наречена $pagenumber, и опитайте това: ‹a href=‹?php echo get_category_link( $category_id ) . страници/ . $номер на страница; ?››Връзка към категория‹/a› - person shipshape; 03.05.2010
comment
Ще трябва да го проверя, но в най-лошия случай бих създал localhost/?cat=17 /paged=5, което води до 17/paged=5 като идентификатор на категория. WP анализира ли това? - person sunside; 04.05.2010

Предполагам, че вече сте го разбрали, но просто исках да разкажа това за другите. Мисля, че разбирам ситуацията ви. Ако прочетох въпроса ви правилно, промяната на настройките за постоянна връзка на администратора не се прилага.

Можете да получите идентификатора на категорията, след което да използвате функцията get_category_link(), за да получите постоянната връзка „pretty“. След това добавете пагинацията в края.

Можете да разбиете постоянната връзка, за да получите идентификатора на категорията и номера на страницата, след което да използвате горната стъпка, за да ги съберете.

Това ли търсихте?

person jtlowe    schedule 15.05.2010

Правилният начин за генериране на връзката би бил да използвате get_category_link и add_query_arg

Във вашия пример ще работи следното:

$category_link = add_query_arg( array('paged' => 5), get_category_link($category->term_id));

Това ще генерира URL адреса и Wordpress ще пренасочи към правилната страница.

person Jonathan    schedule 15.10.2014

разгледайте тази страница, тя обяснява доста постоянни връзки доста добре. http://codex.wordpress.org/Using_Permalinks

Трябва да намерите тези настройки в

Wordpress->Настройки->Постоянни връзки

аз мисля

/%category%/%postname%

в посоката, която искате

Можете също да опитате да пренасочите URL адреса си с помощта на htaccess, ето няколко примера:

[http://]perishablepress.com/press/2008/02/06/permalink-evolution-customize-and-optimize-your-dated-wordpress-permalinks/

Съжалявам darf bis jetzt nur ein link posten pfft... :-(

поздрави, Махатманич

person mahatmanich    schedule 02.05.2010
comment
Alles schön und gut - und danke für die Antwort - aber jeder hier beantwortet alles mögliche, nur nicht meine Frage! :/ Моят блог има красиви постоянни връзки и всички функции, които се продават. Wenn ich jetzt ein Plugin schreibe, habe ich als Programmierer aber keine Ahnung davon, was der Benutzer in seinem Blog eingestellt hat. Ich suche eine Möglichkeit, einen Link zu einer Seite so zu generieren, dass er sich in die Einstellungen des Blogs einfügt. Nen hässlichen Link generieren, der seinen Zweck erfüllt, ist kein Problem - einen schönen zu generieren allerdings zu schon. - person sunside; 03.05.2010
comment
JA AAABER ... Ich verstehe jetzt besser was du meinst, solange der Bloguser aber kein mod_rewrite angestellt hat, keine .htaccess datei angelegt hat, und oder keine settings unter permalinks gesetzt hat lauefst du gegen eine wand ... und da hilft dir auch nicht das dein plugin dann ein pretty rewrite macht. Ohne die einstellungen geht es nun mal einfach nicht. - person mahatmanich; 03.05.2010
comment
du kannst nach php mod_rewrite checken, und dann vielleicht nach den settings die der user in wordpress eingestellt hat, das sollte sich aus der Datenbank rausziehen lassen ... und dann wuerde ich darauf aufbauen ... - person mahatmanich; 03.05.2010
comment
@Markus @mahatmanich В полза на общността, можем ли да запазим съдържанието на английски? Има дискусия по темата... - person Marc Gravell; 04.05.2010
comment
@Marc - Абсолютно, току-що обясних на немски какво казах във въпроса. :) - person sunside; 04.05.2010