web-dev-qa-db-ja.com

Wordpress:投稿内の特定のURLを自動的に変更する

wordpressテーマのリンクを変更する解決策を見つけましたが、コンテンツのリンクは見つかりません。コンテンツのURLを取得する方法はありますか?それで、それらを変更することもできますか?

the contentフィルターを使用する必要があります。しかし、Apple.com/test/Apple.com/test-123/、Apple.com、Microsoft.com、Microsoft.com/test/のようなURLをどのように変更できるのでしょうか。関数は、コンテンツ内の一致するすべてのURLを正しく変更する必要もあります。

add_filter('the_content ', 'function_name');

同様の質問の答え は残念ながら機能しません。

これはリンクを変更するための私の実用的なソリューションですが、コンテンツ内のリンクではありません。

add_filter('rh_post_offer_url_filter', 'link_change_custom');
function link_change_custom($offer_post_url){

$shops= array(
        array('shop'=>'Apple.com','id'=>'1234'),
        array('shop'=>'Microsoft.com','id'=>'5678'),
        array('shop'=>'Dell.com','id'=>'9876'), 
    );
    foreach( $shops as $rule ) {
        if (!empty($offer_post_url) && strpos($offer_post_url, $rule['shop']) !== false) {      
            $offer_post_url = 'https://www.network.com/promotion/click/id='.$rule['id'].'-yxz?param0='.rawurlencode($offer_post_url);
}    
    }
$shops2= array(
        array('shop'=>'example.com','id'=>'1234'),
        array('shop'=>'domain2.com','id'=>'5678'),
        array('shop'=>'domain3','id'=>'9876'),  
    );
    foreach( $shops2 as $rule ) {
        if (!empty($offer_post_url) && strpos($offer_post_url, $rule['shop']) !== false) {      
            $offer_post_url = 'https://www.second-network.com/promotion/click/id='.$rule['id'].'-yxz?param0='.rawurlencode($offer_post_url);
}    
    }

        return $offer_post_url; 
}
6
Grischa

これを行うには、the_contentフィルタなどを使用してみてください。

add_filter('the_content', function($content){

  // filter $content and replace urls
  $content = str_replace('http://old-url', 'http://new-url', $content);

  return $content;
});

詳細: https://developer.wordpress.org/reference/hooks/the_content/

0
mikerojas