AnsPress_Rewrite::rewrites()
Description #
Rewrite rules.
Source #
File: includes/rewrite.php
public static function rewrites() {
global $wp_rewrite;
$rule = anspress()->question_rule['rule'];
$rewrite = anspress()->question_rule['rewrite'];
$all_rules = array();
$base_page_id = ap_opt( 'base_page' );
$slug_main = ap_base_page_slug();
$lang_rule = '';
$lang_rewrite = '';
// Support polylang permalink.
if ( function_exists( 'pll_languages_list' ) ) {
if ( ! empty( pll_languages_list() ) ) {
$lang_rule = '(' . implode( '|', pll_languages_list() ) . ')/';
$lang_rewrite = '&lang=$matches[#]';
}
}
$slug = $lang_rule . $slug_main . '/';
$base_page_id = $base_page_id . $lang_rewrite;
$answer_rewrite = str_replace( 'post_type=question', 'post_type=answer', $rewrite );
$answer_rewrite = str_replace( '&question=', '&question_slug=', $answer_rewrite );
$answer_rewrite = str_replace( '&p=', '&question_id=', $answer_rewrite );
$all_rules = array(
$slug . 'search/([^/]+)/page/?([0-9]{1,})/?$' => 'index.php?s=$matches[#]&paged=$matches[#]&post_type=question',
$slug . 'search/([^/]+)/?$' => 'index.php?s=$matches[#]&post_type=question',
$slug . 'edit/?$' => 'index.php?pagename=' . $slug_main . '&ap_page=edit',
$lang_rule . $rule . '/answer/([0-9]+)/(feed|rdf|rss|rss2|atom)/?$' => $lang_rewrite . $answer_rewrite . '&answer_id=$matches[#]&feed=$matches[#]',
$lang_rule . $rule . '/answer/([0-9]+)/embed/?$' => $lang_rewrite . $answer_rewrite . '&answer_id=$matches[#]&embed=true',
$lang_rule . $rule . '/answer/([0-9]+)/?$' => $lang_rewrite . $rewrite . '&answer_id=$matches[#]',
$lang_rule . $rule . '/page/?([0-9]{1,})/?$' => $lang_rewrite . $rewrite . '&ap_paged=$matches[#]',
$lang_rule . $rule . '/(feed|rdf|rss|rss2|atom)/?$' => $lang_rewrite . $rewrite . '&feed=$matches[#]',
$lang_rule . $rule . '/embed/?$' => $lang_rewrite . $rewrite . '&embed=true',
$lang_rule . $rule . '/?$' => $lang_rewrite . $rewrite,
);
/**
* Allows filtering AnsPress rewrite rules.
*
* @param array $all_rules Rewrite rules.
* @since 4.1.0
*/
$all_rules = apply_filters( 'ap_rewrites', $all_rules, $slug, $base_page_id );
$ap_rules = array();
foreach ( $all_rules as $r => $re ) {
$re = preg_replace( '/\\$([1-9]+)/', '$matches[#]', $re );
$re = preg_replace_callback( '/\#/', array( __CLASS__, 'incr_hash' ), $re );
$ap_rules[ $r ] = $re;
self::$counter = 1;
}
$front = ltrim( $wp_rewrite->front, '/' );
$wp_rewrite->rules = ap_array_insert_after( $wp_rewrite->rules, $front . 'type/([^/]+)/?$', $ap_rules );
return $wp_rewrite->rules;
}
Expand full source code Collapse full source code View on GitHub: includes/rewrite.php:105
Add your comment