wp-config.phpがあるディレクトリにsitemap.phpを設置
サイトマップ
file_get_contents()をcurl化
function getCurl($url,array $opt = []){
$defaults = [
CURLOPT_URL => $url,
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_TIMEOUT => 5
];
$ch = curl_init();
curl_setopt_array($ch, ($opt + $defaults));
if(!$result = curl_exec($ch)){
error_log('Curl error: '.curl_error($ch).' url: '.$url);
}
curl_close($ch);
return $result;
}
echo getCurl('https://wp.wkbr.net');
wordpress 現在のURL取得
$uri = explode('?',$_SERVER['REQUEST_URI'])[0];
$url = home_url($uri);
WordPressで非公開記事がRSSに載らないようにする
// {{{ RSS 非公開記事の非表示
add_filter('request',function($query){
if(isset($query['feed']) && $query['feed'] === 'feed'){
$query['post_status'] = 'publish';
}
return $query;
});
// }}}
wordpressでURLに新規パラメータを追加 スマートフォンでページを分ける
例えばスマホページ等でページを分ける
パラメーターsmpがあったらスマホ用のsmp-single.phpを読み込む
// URLへのパラメーター追加を許可
add_action('init',function(){
add_rewrite_endpoint('smp', EP_PERMALINK);
//flush_rewrite_rules(); // DBの更新だが初回のみでよいのでコメントアウト
});
// スマホ用テンプレートの選択
add_action('template_redirect',function(){
if(!is_single()){return;}
$smp = get_query_var('smp', false);
if(!$smp){return;}
include(get_template_directory().'/smp-single.php');
exit;
});
// パラメーターの追加
add_filter('query_vars',function($vars){
$vars[] = 'smp';
return $vars;
});
// urlの場合はパラメーターが空になるのでtrueに上書き
add_filter( 'request',function($vars){
if ( isset( $vars['smp'] ) && '' === $vars['smp'] ) {
$vars['smp'] = 1;
}
return $vars;
});
PHPでOGPを取得する
function getOGP($file,$ogps = ['title','description','image']){
$html = @file_get_contents($file);
if(!$html){ return false; }
$html = mb_convert_encoding($html, 'HTML-ENTITIES','ASCII,JIS,UTF-8,EUC-JP,SJIS');
$dom = new DOMDocument();
$err = @$dom->loadHTML($html);
if(!$err){ return false; }
$return = (object)[];
$metas = $dom->getElementsByTagName('meta');
foreach($metas as $m){
$prop = str_replace('og:','',$m->getAttribute('property'));
if(in_array($prop,$ogps)){
$return->$prop = $m->getAttribute('content');
}
}
return $return;
}
$ogp = getOGP('https://www.google.co.jp/');
WordPressでリモートアドレスの上書き
add_action('plugins_loaded',function(){
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
$_SERVER['REMOTE_ADDR'] = $list[0];
}
});
実行箇所は要検討だが今のところ上記で問題ない。
PHPで拡張子を取得する
$str = 'filename.txt'; $ext = substr($str,strrpos($str,'.')+1);
