Holen Sie sich neue WordPress Slug aus alten WordPress Slug

Ich habe einen Shortcode namens post implementiert, der ein Attribut src enthält, das eine Verknüpfung von einer Seite hat

 [post src="http://www.listenmoneymatters.com/the-betterment-experiment/"] 

Derzeit erstellt dieser functionscode einen auf den Metadaten des Beitrags basierenden Link:

 // MORE INFORMATION LINK add_shortcode('post', 'post_shortcode'); function post_shortcode($atts) { extract(shortcode_atts(array( "src" => '', "title" => '', "url" => '', "image" => '' ), $atts)); $post_id = url_to_postid( $src ); $post = get_post( $post_id ); $post_title = get_the_title( $post_id ); $post_thumb = get_the_post_thumbnail( $post_id, array(150,150) ); if($post->post_excerpt == '') { $post_description = text_limit($post->post_content, 175); } else { $post_description = $post->post_excerpt; } return '  '.$post_thumb.' 

'.$post_title.'

'.$post_description.'

'; }

Das Problem ist, dass alte Vorkommen dieser Shortcode-Links zu Posts, deren Permalink geändert wurde.

Wie kann ich den alten Post basierend auf seinem alten Permalink nachschlagen und dann den kurzen Code den Link mit dem neuen Permalink anzeigen lassen?

Solutions Collecting From Web of "Holen Sie sich neue WordPress Slug aus alten WordPress Slug"

Bevor wir beginnen, möchte ich nur kurz erwähnen, dass es für die Zukunft einfacher ist, den Post mit seiner ID anstatt mit der URL zu referenzieren, da dies bei Änderungen von Slugs gleich bleiben wird. Wie auch immer, da Sie diesen Shortcode bereits haben, brauchen wir eine andere Lösung.

Ihr Problem besteht darin, dass Sie einen Post von seiner URL finden müssen, wenn sich der Permalink geändert hat. Glücklicherweise ist der alte Slug in _wp_old_slug in der _wp_old_slug Tabelle gespeichert. Das sind also zwei Schritte:

Erhalte Slug von der URL

Ich nehme an, dass Sie die Permalink-Struktur nicht geändert haben, nur die Nacktschnecken. Also hier ist der Code, um den Slug aus der URL zu extrahieren:

 $url ='http://www.listenmoneymatters.com/the-betterment-experiment/'; $url = explode("/",$url); // Split URL at "/" $url = array_filter(); // Remove empty array entries so get rid of last "/" $slug = array_pop($url); // Get last URL Segment 

Abfrage Posts für diesen Slug

 $posts = get_posts(array( 'meta_key' => '_wp_old_slug', 'meta_value' => $slug, 'post_type' => 'post', ));