web-dev-qa-db-ja.com

サイドバーに機能をフックする?

サイドバーが読み込まれたときに、サイドバーの上部にコンテンツを追加する方法を探しています。

Get_sidebarアクションを ここで参照 としてフックしようとしましたが、サイドバー呼び出しをオーバーライドして代わりに関数をロードするようです。ウィジェットを作成する以外にこれを行うためのより良い解決策はありますか?可能であればそれを避けたいのですが、私はまったくその考えに反対しているわけではないので、フックが最善です:)

これが私のフックの外観です。add_action('get_sidebar', 'social_links');

注: 呼び出された関数はソーシャルメディアへのリンクのリストを表示しているだけです。

(MAMPサーバー上でローカルで最新バージョン(3.1)を実行している)

4
Cole

サイドバーの下部に負荷をかける

ほとんどのサイドバーには、 wp_meta() アクションフックの呼び出しがあります。このフックでは、サイドバーの(主に下部)にフックできます。

サイドバーの上にロードする

関数get_sidebar( $name )は、テンプレートで必要なサイドバーを呼び出します(これにより、異なるサイドバーを使用できます)。たとえば、ものを追加したい場合。サイドバーの上部には、サイドバーがロードされる直前に、サイドバーの上部を実行する内部アクションフックを自由に使用できます。その後、すべてをこの呼び出しにフックできます。

例:

function add_before_my_siderbar( $name ) 
{
    echo "Loaded on top of the {$name}-sidebar";

    // Example that uses the $name of the sidebar as switch/trigger
    'main' === $name AND print "I'm picky and only echo for special sidebars!";
}
add_action( 'get_sidebar', 'add_before_my_siderbar' );

テーマに関する注意

get_sidebar- hookはget_sidebar()関数の上にあり、トリガーbeforeサイドバーファイルが含まれます。つまり、このフックを使用して前にコンテンツを追加し、wp_meta()を使用して何かを追加する必要がありますafterサイドバー。テーマがサイドバーテンプレートの最後よりも早くwp_meta()を使用している場合、間違っています。

3
kaiser

サイドバーのテンプレートファイルを取得する関数でget_sidebarフックが呼び出されるため、正しい方法ではありません。

あなたがウィジェットを作成することにしていない場合は、あなたの関数をショートコードに変換して組み込みのテキストウィジェットで使用することができます。

どうやって? 単純、あなたの関数はsocial_linksと命名されたと言います、そして追加します:

add_shortcode('SL', 'social_links'); 
// and to make sure Wordpress calls shortcode in sidebars
add_filter('widget_text', 'do_shortcode');

使用法? もう一度簡単に、テキストウィジェットを追加して、その中に[SL]を入れてください。

関数がエコーするのではなく出力を返すことを確認してください。

2
Bainternet

Wp_metahookに戻る代わりに、結果の例をエコーし​​てください。

add_action('wp_meta','my_function')

function my_function(){
   //no return 'hello';
   //try this and it will shows at the top of the sidebar
   echo 'hello';
}

参照してください: コーデックスのwp_metaフック

0
jepser