web-dev-qa-db-ja.com

uRLリンククエリ文字列の作り方

"ctr_state"という名前のカスタムメタフィールドを持つページがあり、それには "Arizona"のような州名が含まれています。

探しているmeta_valueと一致するアーカイブのようなページのリストを返すハイパーリンクを構築しようとしています。

例えば、

<a href="http://mydomain.com/?type=page&amp;meta_key=ctr_state&amp;meta_value=Arizona">Show All Arizona Pages</a>

これはうまくいきませんが、リンクとして機能させる方法を示すためだけのものです。ページにリストを表示したくない場合は、アーカイブタイプのページにリンクして、目的の状態に一致するページだけを表示するようにします。

これは可能ですか?

1
stabilimenta

これは私がそれを動かした方法です:

これをfunctions.phpに追加しました:

function include_template_function( $template_path ) {
    global $wp;
    if ($wp->request == 'state') {
        $template_path = locate_template( array ( 'state.php' ) );
    }
    return $template_path;
}

$state_name = $_GET['st']; //this is added to use as a global variable

WPは404ページを処理していると考えているため、これをheader.phpに追加しました

    if ($wp->request == 'state') { 
        echo 'Member Centers in ' . $state_name . ' | ';
    } else {
        wp_title( '|', true, 'right' );
    } 
?>
</title>

これを基本テンプレート(page.php)に追加します。

<?php 
    $baseURL = esc_url( home_url( '/' ) );
    $ak_link = $baseURL . 'state?st=Alaska'; // for each state
?>
<a href="<?php echo $ak_link; ?>">Show Alaska Pages</a> 

状態問い合わせを処理するCREATED state.phpテンプレート:

<?php global $state_name; ?> ?>

<?php 
    $mypages = get_pages('child_of='.$parent_page_id.'&sort_order=ASC&parent='.$parent_page_id.'&meta_key=ctr_state&meta_value='.$state_name);
    foreach($mypages as $page)
    {
?>
... Do Stuff! ...
<?php } ?>
1
stabilimenta