web-dev-qa-db-fra.com

Extraire un paramètre d'une URL dans WordPress

J'essaie de passer un paramètre à un site WordPress en utilisant une URL - par exemple:

www.fioriapts.com/?ppc=1 Sera l'URL.

J'ai l'intention d'écrire une fonction dans le fichier functions.php mais la mécanique de la façon d'extraire un paramètre dans WordPress me dépasse. Je trouve beaucoup d'exemples sur la façon d'ajouter un paramètre vers une URL en utilisant la fonction add_query_arg() mais je n'ai rien trouvé sur la façon d'extraire un paramètre. Merci d'avance pour toute aide.

23
Chuck

Lorsque vous passez des paramètres via l'URL, vous pouvez récupérer les valeurs en tant que paramètres GET.

Utilisez ceci:

$variable = $_GET['param_name'];

//Or as you have it
$ppc = $_GET['ppc'];

Il est plus sûr de vérifier d'abord la variable:

if (isset($_GET['ppc'])) {
  $ppc = $_GET['ppc'];
} else {
  //Handle the case where there is no parameter
}

Voici un peu de lecture sur les paramètres GET/POST que vous devriez regarder: http://php.net/manual/en/reserved.variables.get.php

EDIT: Je vois que cette réponse reçoit encore beaucoup de trafic des années après l'avoir faite. Veuillez lire les commentaires joints à cette réponse, en particulier l'entrée de @emc qui détaille une fonction WordPress qui accomplit cet objectif en toute sécurité .

41
Grambot

Pourquoi ne pas simplement utiliser la fonction WordPress get_query_var()? Lien vers le Codex

// Test if the query exists at the URL
if ( get_query_var('ppc') ) {

    // If so echo the value
    echo get_query_var('ppc');

}

Étant donné que get_query_var ne peut accéder qu'aux paramètres de requête disponibles pour WP_Query, afin d'accéder à une var de requête personnalisée comme 'ppc', vous devrez également enregistrer cette variable de requête dans votre plugin ou functions.php en ajoutant une action lors de l'initialisation:

add_action('init','add_get_val');
function add_get_val() { 
    global $wp; 
    $wp->add_query_var('ppc'); 
}

Ou en ajoutant un hook au filtre query_vars:

function add_query_vars_filter( $vars ){
  $vars[] = "ppc";
  return $vars;
}
add_filter( 'query_vars', 'add_query_vars_filter' );
29
Marc

Vous pouvez essayer cette fonction

/**
 * Gets the request parameter.
 *
 * @param      string  $key      The query parameter
 * @param      string  $default  The default value to return if not found
 *
 * @return     string  The request parameter.
 */

function get_request_parameter( $key, $default = '' ) {
    // If not request set
    if ( ! isset( $_REQUEST[ $key ] ) || empty( $_REQUEST[ $key ] ) ) {
        return $default;
    }

    // Set so process it
    return strip_tags( (string) wp_unslash( $_REQUEST[ $key ] ) );
}

Voici ce qui se passe dans la fonction

Ici, trois choses se produisent.

  • Nous vérifions d'abord si la clé de demande est présente ou non. Sinon, renvoyez simplement une valeur par défaut.
  • S'il est défini, nous supprimons d'abord les barres obliques en faisant wp_unslash. Lisez ici pourquoi c'est mieux que stripslashes_deep.
  • Ensuite, nous nettoyons la valeur en faisant un simple strip_tags. Si vous attendez du texte riche à partir d'un paramètre, exécutez-le via wp_kses ou des fonctions similaires.

Toutes ces informations et plus d'informations sur la réflexion derrière la fonction sont disponibles sur ce lien https://www.intechgrity.com/correct-way-get-url-parameter-values-wordpress/

2
briankip

Dans la fonction de rappel, utilisez le paramètre $ request

$parameters = $request->get_params();
echo $parameters['ppc'];
1
Mohan