WordPressでは、ユーザーがサインインしていない場合に特定の投稿を(カテゴリ別に)表示しないようにするためにfunctions.phpの関数を使用します。
function my_filter( $content ) {
$categories = array(
'news',
'opinions',
'sports',
'other',
);
if ( in_category( $categories ) ) {
if ( is_logged_in() ) {
return $content;
} else {
$content = '<p>Sorry, this post is only available to members</p> <a href="gateblogs.com/login"> Login </a>';
return $content;
}
} else {
return $content;
}
}
add_filter( 'the_content', 'my_filter' );
私はプラグインを使用します(私の質問にとっては重要ではありません)が、基本的には、ログイン成功後にhttps://gateblogs.com/login?redirect_to=https%3A%2F%2Fgateblogs.com%2Ftechnology%2Flinux-tutorials%2Fsending-mail-from-server
のようなものを使用してページにリダイレクトすることができます。投稿のURLを取得してサインアップリンクに適用するにはどうすればよいですか。
注意:この関数はもともとこの質問からのものです。
私はget_the_permalink()
関数でそれをする方法を考え出しました:
/* Protect Member Only Posts*/
function post_filter( $content ) {
$categories = array(
'coding',
'python',
'linux-tutorials',
'Swift',
'premium',
);
if ( in_category( $categories ) ) {
if ( is_user_logged_in() ) {
return $content;
} else {
$link = get_the_permalink();
$link = str_replace(':', '%3A', $link);
$link = str_replace('/', '%2F', $link);
$content = "<p>Sorry, this post is only available to members. <a href=\"gateblogs.com/login?redirect_to=$link\">Sign in/Register</a></p>";
return $content;
}
} else {
return $content;
}
}
add_filter( 'the_content', 'post_filter' );
str_replace
は、プラグインが機能するようにリンクを変更する必要があるためです。
get_the_permalink()
をis_single()
と組み合わせて使用することで、条件付きで投稿のURLを返すことができます。
add_filter( 'the_content', 'my_filter' );
function my_filter( $content ) {
// Check if we're inside the main loop in a single post page.
if ( is_single() && in_the_loop() && is_main_query() ) {
return $content . get_the_permalink();
}
return $content;
}