Verwenden Sie WP-Titel anstelle des benutzerdefinierten Feldes, um anzurufen

Jemand half, diesen Code letzte Woche zu vollenden, der tadellos funktioniert, zieht Schlüsselwörter, die in ein kundenspezifisches Feld (erweiterte kundenspezifische Felder) eingegeben werden, in die Mitte einer URL und leitet sie dann um.

Code in benutzerdefinierter Einzelvorlage:

<?php $url = get_site_url(); $id = get_the_ID(); echo "More info Test dynamic Amazon"; ?> 

Code in der function.php

 add_action( 'template_redirect', function(){ global $wp_query; if ($goto = get_query_var( 'gotoamazon' )) { $keywds = urlencode(get_field('amazon_keywords',intval($goto))); $link = "http://www.amazon.co.uk/s/?_encoding=UTF8&camp=1634&creative=19450&field-keywords={$keywds}&linkCode=ur2&tag=AFFID"; wp_redirect($link); exit; } }); 

Überschreibt auch in functions.php:

 add_action( 'init', function(){ add_rewrite_tag('%gotoamazon%','([^&]+)'); add_rewrite_rule('^goto/amazon/(.*)/?','index.php?gotoamazon=$matches[1]','top'); }); 

Aber was ID jetzt tun mag, ist den gleichen Code zu verwenden, um den wp_title zu ziehen, wenn das Schlüsselwortfeld leer ist, ich habe das bedingte Setup, ich habe dann den Code von oben kopiert und es in den Titel geändert (oder was ich dachte, würde funktionieren) Es fügt den Titel nicht an dem gewünschten Ort ein.

 add_action( 'template_redirect', function(){ global $wp_query; if ($goto = get_query_var( 'gotoamazon' )) { $keytitle = urlencode(wp_title(', '),true,intval($goto)); $link = "http://www.amazon.co.uk/s/?_encoding=UTF8&camp=1634&creative=19450&field-keywords={$keytitle}&linkCode=ur2&tag=AFFID"; wp_redirect($link); exit; } }); 

Solutions Collecting From Web of "Verwenden Sie WP-Titel anstelle des benutzerdefinierten Feldes, um anzurufen"

Du urlencode zu viele Argumente an urlencode .

WordPress bietet ein paar nützliche functionen für diese Situationen. add_query_arg ist ein add_query_arg zum Erstellen einer URL mit Abfrageargumenten und esc_url bietet Hygiene und validationen, die für esc_url URLs relevant sind.

Außerdem zeigt oder gibt wp_title eine Kombination aus dem Seiten- / Beitragstitel und einem Trennzeichen zurück, was nicht das zu sein scheint, was Sie brauchen. Ich gehe davon aus, dass Sie den Titel der Seite / des get_the_title wollen, also habe ich die function get_the_title verwendet und ihr die Variable Global $post .

 add_action( 'template_redirect', function(){ if ( ! is_singular( 'post_type_key' ) ) { return; } Global $post; $default = get_the_title($post); $keytitle = get_query_var( 'gotoamazon', $default ); $args = array( '_encoding' => 'UTF8', 'camp' => '1634', 'creative' => '19450', 'field-keywords' => $keytitle, 'linkCode' => 'ur2', 'tag' => 'AFFID' ); $link = add_query_arg($args, 'http://www.amazon.co.uk/s/' ); wp_redirect( esc_url( $link ) ); exit; });