PluginProbe
Bogo / 2.6
Bogo v2.6
3.9.3 trunk 1.0 1.1 2.0 2.0.1 2.1 2.1.1 2.1.2 2.1.3 2.2 2.3 2.4 2.4.1 2.4.2 2.4.3 2.5 2.6 2.6.1 2.7 2.8 2.8.1 2.9 3.0 3.0.1 All 52 releases
← All changes | includes/rewrite.php +48 -17 2.42.6 View file →
@@ -4,10 +4,11 @@
4 4
5 5 function bogo_add_rewrite_tags() {
6 6 $regex = bogo_get_lang_regex();
7 7
8 - if ( empty( $regex ) )
8 + if ( empty( $regex ) ) {
9 9 return;
10 + }
10 11
11 12 add_rewrite_tag( '%lang%', $regex, 'lang=' );
12 13
13 14 $old_regex = bogo_get_prop( 'lang_rewrite_regex' );
@@ -180,17 +181,29 @@
180 181
181 182 function bogo_rewrite_rules_array( $rules ) {
182 183 global $wp_rewrite;
183 184
185 + $lang_regex = bogo_get_lang_regex();
186 +
187 + // REST rewrite rules
188 + $rest_url_prefix = rest_get_url_prefix();
189 +
190 + $extra_rules = array(
191 + "^{$lang_regex}/{$rest_url_prefix}/?$"
192 + => 'index.php?lang=$matches[1]&rest_route=/',
193 + "^{$lang_regex}/{$rest_url_prefix}/(.*)?"
194 + => 'index.php?lang=$matches[1]&rest_route=/$matches[2]' );
195 +
196 + $rules = $extra_rules + $rules;
197 +
184 198 $post_types = array_diff(
185 199 (array) bogo_localizable_post_types(),
186 200 get_post_types( array( '_builtin' => true ) ) );
187 201
188 - if ( empty( $post_types ) )
202 + if ( empty( $post_types ) ) {
189 203 return $rules;
204 + }
190 205
191 - $lang_regex = bogo_get_lang_regex();
192 -
193 206 foreach ( $post_types as $post_type ) {
194 207 if ( ! $post_type_obj = get_post_type_object( $post_type ) )
195 208 continue;
196 209
@@ -301,8 +314,9 @@
301 314 $feedregex = $wp_rewrite->feed_base . '/' . $feedregex2;
302 315 $trackbackregex = 'trackback/?$';
303 316 $pageregex = $wp_rewrite->pagination_base . '/?([0-9]{1,})/?$';
304 317 $commentregex = 'comment-page-([0-9]{1,})/?$';
318 + $embedregex = 'embed/?$';
305 319
306 320 if ( $endpoints ) {
307 321 $ep_query_append = array();
308 322
@@ -318,14 +332,16 @@
318 332 $num_tokens = count( $tokens[0] );
319 333 $index = $wp_rewrite->index;
320 334 $feedindex = $index;
321 335 $trackbackindex = $index;
336 + $embedindex = $index;
322 337
323 338 for ( $i = 0; $i < $num_tokens; ++$i ) {
324 - if ( 0 < $i )
339 + if ( 0 < $i ) {
325 340 $queries[$i] = $queries[$i - 1] . '&';
326 - else
341 + } else {
327 342 $queries[$i] = '';
343 + }
328 344
329 345 $query_token =
330 346 str_replace( $wp_rewrite->rewritecode, $wp_rewrite->queryreplace, $tokens[0][$i] )
331 347 . $wp_rewrite->preg_index( $i + 1 );
@@ -334,10 +350,11 @@
334 350 }
335 351
336 352 $structure = $permalink_structure;
337 353
338 - if ( $front != '/' )
354 + if ( $front != '/' ) {
339 355 $structure = str_replace( $front, '', $structure );
356 + }
340 357
341 358 $structure = trim( $structure, '/' );
342 359
343 360 $dirs = $walk_dirs ? explode( '/', $structure ) : array( $structure );
@@ -400,24 +417,28 @@
400 417 }
401 418
402 419 $rewrite = array();
403 420
404 - if ( $feed )
421 + if ( $feed ) {
405 422 $rewrite = array( $feedmatch => $feedquery, $feedmatch2 => $feedquery2 );
423 + }
406 424
407 - if ( $paged )
425 + if ( $paged ) {
408 426 $rewrite = array_merge( $rewrite, array( $pagematch => $pagequery ) );
427 + }
409 428
410 - if ( EP_PAGES & $ep_mask || EP_PERMALINK & $ep_mask )
429 + if ( EP_PAGES & $ep_mask || EP_PERMALINK & $ep_mask ) {
411 430 $rewrite = array_merge( $rewrite, array( $commentmatch => $commentquery ) );
412 - else if ( EP_ROOT & $ep_mask && get_option( 'page_on_front' ) )
431 + } elseif ( EP_ROOT & $ep_mask && get_option( 'page_on_front' ) ) {
413 432 $rewrite = array_merge( $rewrite, array( $rootcommentmatch => $rootcommentquery ) );
433 + }
414 434
415 435 if ( $endpoints ) {
416 436 foreach ( (array) $ep_query_append as $regex => $ep ) {
417 - if ( $ep[0] & $ep_mask || $ep[0] & $ep_mask_specific )
437 + if ( $ep[0] & $ep_mask || $ep[0] & $ep_mask_specific ) {
418 438 $rewrite[$match . $regex] = $index . '?' . $query
419 439 . $ep[1] . $wp_rewrite->preg_index( $num_toks + 2 );
440 + }
420 441 }
421 442 }
422 443
423 444 if ( $num_toks ) {
@@ -434,10 +455,11 @@
434 455 && strpos( $struct, '%minute%' ) !== false
435 456 && strpos( $struct, '%second%' ) !== false ) ) {
436 457 $post = true;
437 458
438 - if ( strpos( $struct, '%pagename%' ) !== false )
459 + if ( strpos( $struct, '%pagename%' ) !== false ) {
439 460 $page = true;
461 + }
440 462 }
441 463
442 464 if ( ! $post ) {
443 465 foreach ( get_post_types( array( '_builtin' => false ) ) as $ptype ) {
@@ -451,8 +473,12 @@
451 473
452 474 if ( $post ) {
453 475 $trackbackmatch = $match . $trackbackregex;
454 476 $trackbackquery = $trackbackindex . '?' . $query . '&tb=1';
477 +
478 + $embedmatch = $match . $embedregex;
479 + $embedquery = $embedindex . '?' . $query . '&embed=true';
480 +
455 481 $match = rtrim( $match, '/' );
456 482 $submatchbase = preg_replace( '/\(([^?].+?)\)/', '(?:$1)', $match );
457 483
458 484 $sub1 = $submatchbase . '/([^/]+)/';
@@ -459,8 +485,9 @@
459 485 $sub1tb = $sub1 . $trackbackregex;
460 486 $sub1feed = $sub1 . $feedregex;
461 487 $sub1feed2 = $sub1 . $feedregex2;
462 488 $sub1comment = $sub1 . $commentregex;
489 + $sub1embed = $sub1 . $embedregex;
463 490
464 491 $sub2 = $submatchbase . '/attachment/([^/]+)/';
465 492 $sub2tb = $sub2 . $trackbackregex;
466 493 $sub2feed = $sub2 . $feedregex;
@@ -465,13 +492,15 @@
465 492 $sub2tb = $sub2 . $trackbackregex;
466 493 $sub2feed = $sub2 . $feedregex;
467 494 $sub2feed2 = $sub2 . $feedregex2;
468 495 $sub2comment = $sub2 . $commentregex;
496 + $sub2embed = $sub2 . $embedregex;
469 497
470 498 $subquery = $index . '?attachment=' . $wp_rewrite->preg_index( 1 );
471 499 $subtbquery = $subquery . '&tb=1';
472 500 $subfeedquery = $subquery . '&feed=' . $wp_rewrite->preg_index( 2 );
473 501 $subcommentquery = $subquery . '&cpage=' . $wp_rewrite->preg_index( 2 );
502 + $subembedquery = $subquery . '&embed=true';
474 503
475 504 if ( ! empty( $endpoints ) ) {
476 505 foreach ( (array) $ep_query_append as $regex => $ep ) {
477 506 if ( $ep[0] & EP_ATTACHMENT ) {
@@ -498,8 +527,10 @@
498 527
499 528 if ( $post ) {
500 529 $rewrite = array_merge( array( $trackbackmatch => $trackbackquery ), $rewrite );
501 530
531 + $rewrite = array_merge( array( $embedmatch => $embedquery ), $rewrite );
532 +
502 533 if ( ! $page ) {
503 534 $rewrite = array_merge( $rewrite, array(
504 535 $sub1 => $subquery,
505 536 $sub1tb => $subtbquery,
@@ -504,9 +535,10 @@
504 535 $sub1 => $subquery,
505 536 $sub1tb => $subtbquery,
506 537 $sub1feed => $subfeedquery,
507 538 $sub1feed2 => $subfeedquery,
508 - $sub1comment => $subcommentquery ) );
539 + $sub1comment => $subcommentquery,
540 + $sub1embed => $subembedquery ) );
509 541 }
510 542
511 543 $rewrite = array_merge( array(
512 544 $sub2 => $subquery,
@@ -512,9 +544,10 @@
512 544 $sub2 => $subquery,
513 545 $sub2tb => $subtbquery,
514 546 $sub2feed => $subfeedquery,
515 547 $sub2feed2 => $subfeedquery,
516 - $sub2comment => $subcommentquery ), $rewrite );
548 + $sub2comment => $subcommentquery,
549 + $sub2embed => $subembedquery ), $rewrite );
517 550 }
518 551 }
519 552
520 553 $post_rewrite = array_merge( $rewrite, $post_rewrite );
@@ -521,6 +554,4 @@
521 554 }
522 555
523 556 return $post_rewrite;
524 557 }
525 -
526 -?>