回答:
現在のURLはから取得できますhome_url( $wp->request )
。
以下の例を試してください:
global $wp;
// get current url with query string.
$current_url = home_url( $wp->request );
// get the position where '/page.. ' text start.
$pos = strpos($current_url , '/page');
// remove string from the specific postion
$finalurl = substr($current_url,0,$pos);
echo $finalurl;
Govind Kumarによる回答は機能しましたが、URLに/ page / {pagenum} /が存在する場合にのみURLを返し、存在しない場合は何も返しませんでした。常にページ付けなしでベースURLを返すユニバーサルソリューションが必要だったので、Govindのコードを少し変更して関数にラップしました。
function get_nopaging_url() {
global $wp;
$current_url = home_url( $wp->request );
$position = strpos( $current_url , '/page' );
$nopaging_url = ( $position ) ? substr( $current_url, 0, $position ) : $current_url;
return trailingslashit( $nopaging_url );
}
echo get_nopaging_url();
現在は常に正しいURLを返します。
(これは、メタファイルなどで投稿をフィルターするパラメーターを追加する何らかの種類の投稿フィルターを実装する必要がある場合に役立ちます。したがって、ユーザーがページXでフィルターパラメーターを設定した場合でも、新しいフィルター結果は常にベースURLではなく、ページXと少ないフィルタポストがあるかどう404を投げてから開始します。)
/page
サブストリングがドメイン名の一部であるとさえ考えなかった(もちろん、wwwが使用されていない場合)。つまり、イモ、むしろエッジケースです。ただし、このケースもカバーするコードを追加して貢献することをお勧めします。
実際には、最も簡単なのはget_pagenum_link()
、/page/*
パラメータなしで現在のURLを返すことです。
また、'paged'
クエリ変数を使用して動的に「前へ」および「次へ」リンクを構築するためにそれを使用することもできます。
// Get the current page number.
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$first_page = '<a href="' . get_pagenum_link() . '" class="page-first"><<</a>';
$prev_page = '<a href="' . get_pagenum_link($paged - 1) . '" class="page-prev"><</a>';
$next_page = '<a href="' . get_pagenum_link($paged + 1) . ' class="page-next">></a>';
// And having a `WP_Query` object you can also build the link for the last page:
$max = $the_query->max_num_pages;
$last_page = '<a href="' . get_pagenum_link($max) . '" class="page-last">>></a>';
可能なすべてのページネーションの組み合わせを削除したい場合は、次のスニペットを使用します。
// remove pagination from url
$pattern = '/page(\/)*([0-9\/])*/i';
$url = preg_replace($pattern, '', $GLOBALS['wp']->request);
お世話になります
/page
/page/
/page/1
/page/1/
...
大文字と小文字を区別せず、どのページ番号のページ番号でも機能し、末尾の番号/番号/番号の任意の組み合わせも削除します...(ここでのテスト:https : //regex101.com/r/9fQaLC/1)
先頭のhttpで完全なURLを取得したい場合は、
$url = home_url($url);
その行では、カスタムGETパラメータを追加することもできます。
$url = home_url($url . '?typ=test');
page/{pagenum}
。
trait TraitURLStrip {
/**
* Strips off paging and query string. Returns a filter-the-results friendly URL
*
* @param bool $str_url
* @param string $str_page
*
* @return bool|string
*/
protected function urlStrip( $str_url = false , $str_page = 'page' ){
if ( is_string( $str_url) ) {
$arr_parse_url = wp_parse_url( $str_url );
$str_path_no_page = '';
if ( isset( $arr_parse_url['path'] ) ) {
// if we're paging then remove that. please!
$str_path_no_page = preg_replace( "/\/{$str_page}\/[0-9]*\/$/", "/", $arr_parse_url['path'] );
}
$str_scheme_host = "{$arr_parse_url['scheme']}://{$arr_parse_url['host']}";
return $str_scheme_host . $str_path_no_page;
}
return false;
}
}