web-dev-qa-db-ja.com

ショートコードのJavaScriptがテーマフォルダ内のカスタムテンプレートファイルで機能的ではない

私はWordPressソーシャルログインプラグインのショートコード[wordpress_social_login]を使用しています。私はそれをテーマディレクトリの中のカスタムテンプレートファイルに入れたいです。

例:

<?php 
/*
Template Name: Social Login Page
*/
echo do_shortcode('[wordpress_social_login]');

だから私はこのテンプレートを使用して空白のページを作成します、レンダリングは問題ありませんがボタンhrefはjavascript:void(0);になり、リダイレクトされません。

私はこれを理解することができないので、助けてください..

ありがとう

1
Hend Ry

テンプレートにget_header()またはget_footer()が含まれていません。を含むheader.phpとfooter.phpをロードし、wp_head()wp_footer()をインクルードします。最後の2つの機能はスクリプトがロードされる場所であるため重要です。

ショートコードがヘッダまたはフッタにロードされているスクリプトに依存している場合は、needwp_head()またはwp_footer()になります。プラグインがそれらのスクリプトをロードする場所です。このプラグインのコードを見て(そうでない場合は教えてください)、そのスクリプトがwp_head()にロードされます。

それで、少なくともあなたのテンプレートはこのように見える必要があります:

<?php 
/*
Template Name: Social Login Page
*/
?>
<!DOCTYPE html>
<html>
<head>
    <?php wp_head(); ?>
</head>
<body>
    <?php echo do_shortcode('[wordpress_social_login]'); ?>
</body>
</html>

プラグインコードを見ると、それがあなたのlocalhostで働いたかもしれない唯一の方法はあなたがスクリプトを必要とする「ポップアップ」機能をオンにしていなかったということです。

また、wp_head()を使用していなくても、有効なHTMLであるためには<html><head>、および<body>タグが必要です。

1
Jacob Peattie

あなたはdo_shortcode()の間違った構文を使っています。詳しくは do_shortcode() のページを見てください。

echo do_shortcode['wordpress_social_login'];

これでこれを置き換えます:

echo do_shortcode('[wordpress_social_login]');

それを試してみてください。私はそれが便利だと思います。

1
Jignesh Patel