Die WP Rewrite API: QueryStrings übergeben und umschreiben


URLs als Parameterwerte übegeben

Text sollte noch folgen!


Übersicht » WP Rewrite API:


Text

<?php
/*----------------------------------------------------------------------------------
  Plugin Name: Linkausgabe auf Sonderseite
  Description: Einfuegen in Sonderseite mit dem Short-Tag [fuer_ausgabe_von_links]
  Author:      Horst Müller - Stendal
  Version:     Beta 1.02
 -----------------------------------------------------------------------------------
*/
add_action("init", "schreibe_eigene_rewrite_regeln");
add_filter("query_vars", "parameter_fuer_die_uebergabe_von_url");
add_shortcode("fuer_ausgabe_von_links", "uebergabe_von_urls_als_parameter");

function parameter_fuer_die_uebergabe_von_url($neue_querys) {

    $neue_querys[] = "zielhost";
    $neue_querys[] = "zielpfad";
    $neue_querys[] = "zielurl";
    return $neue_querys;
}

function uebergabe_von_urls_als_parameter($atts) {

    global $wp_query;

    /* -- Die zu verlinkenden Web-Adressen in ein Array aufnehmen ----------------*/

    $webadressen = array (

        "www.example.com/evergreens-aus-den-50er-jahren.html",
        "www.example.com/evergreens-aus-den-60er-jahren.html",
        "www.example.com/",
        "www.example.com"
    );
    /* -- Die uebergebenen Werte pruefen und einen Link zusammen setzen ----------*/

    function pruefe_und_bilde_Links($data) {

        $data = preg_replace("/[^a-zA-Z0-9.\/_-]/", "", $data);

        if (preg_match("/[\/]{1}(?P<link>[a-zA-Z0-9_-]+)\.html/", $data, $text)) {
            $text = preg_replace("/[^a-zA-Z0-9]/", " ", $text["link"]);
            $text = strtoupper($text);
        }
        else {
            $text = $data;
        }
        $data = "<a href=\"http://".
                   esc_attr($data)."\">".
                   esc_attr($text)."</a>";
        return $data;
    }

    if (isset($wp_query->query_vars["zielhost"])) {
        $zielhost = $wp_query->query_vars["zielhost"];

        if (isset($wp_query->query_vars["zielpfad"])) {

            $zielpfad = $wp_query->query_vars["zielpfad"];
            $zielurl  = $zielhost."/".$zielpfad;
        }
        else {
            $zielurl  = $zielhost;
        }

        if (in_array($zielurl, $webadressen)) {
            return pruefe_und_bilde_Links($zielurl);
        }
    }
    elseif (isset($wp_query->query_vars["zielurl"])) {

        $zielurl = $wp_query->query_vars["zielurl"];

        if (in_array($zielurl, $webadressen)) {
            return pruefe_und_bilde_Links($zielurl);
        }
    }
    else {
        return "Es wurde nichts übergeben!\n";
    }
}
/*----------------------------------------------------------------------------------
  Zwei unterschiedliche Rewrite-Regeln definieren, je nachdem ob eine nur eine
  Domain oder eine Web-Adresse mit /Unterseite.html uebergeben wird. Der Ausdruck
  vom Suchmuster muss gegebenenfalls erweitert oder angepasst werden oder es muessen
  weitere Regeln definiert werden.
 -----------------------------------------------------------------------------------
*/
function schreibe_eigene_rewrite_Regeln() {

    global $wp_rewrite;
    add_rewrite_rule(

        '^oldies/([a-zA-Z0-9._-]+?)/?$',
        'index.php?name=oldies&zielhost=$matches[1]',
        'top'
    );
    add_rewrite_rule(

        '^oldies/([a-zA-Z0-9._-]+?)/([a-zA-Z0-9._-]*?)/?$',
        'index.php?name=oldies&zielhost=$matches[1]&zielpfad=$matches[2]',
        'top'
    );
    /* -- flush_rules() mur fuer Tests und im Baustellenbetrieb verwenden --------*/

    $wp_rewrite->flush_rules();
}
/*----------------------------------------------------------------------------------
  Nachfolgende Funktion nur fuer Tests und im Baustellenbetrieb verwenden, um alle
  Query Vars und alle Rewrite-Regeln anzuzeigen.
 -----------------------------------------------------------------------------------
*/
add_action("wp_footer", "zeige_alle_querys_an");

function zeige_alle_querys_an() {

    global $wp_query;
    global $wp_rewrite;

    echo "<pre>\n";
    print_r($wp_query->query_vars);
    echo "<hr />\n";
    print_r($wp_rewrite->rules);
    echo "</pre>\n";
}
?>

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *