フォーラムへの返信

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック投稿者 s-y-u

    (@s-y-u)

    失礼致しました。
    解決致しました。

    トピック投稿者 s-y-u

    (@s-y-u)

    具体的には自前のメニューです。
    ご回答ありがとうございました。助かりました!

    フォーラム: 使い方全般
    返信が含まれるトピック: WP_Queryの検索結果がwp-cronと手動とで異なる
    トピック投稿者 s-y-u

    (@s-y-u)

    WP_Queryで検索した値が手動とwp-cronの時とで異なる件で追記です。

    パラメータに「post_status」を指定しない場合、手動の時、

    [request]の値には
    wp_posts.post_status = ‘publish’ OR
    wp_posts.post_status = ‘future’ OR
    wp_posts.post_status = ‘draft’ OR
    wp_posts.post_status = ‘pending’ OR
    wp_posts.post_status = ‘private’

    と5つのステータスがORで入るのですが、wp-cronではひとつだけの

    wp_posts.post_status = ‘publish’

    となっています。

    WP_Queryはwp-cronと手動での実行とでは、検索結果が同じだと思っていたのですが、指定しないパラメータの入り方が異なるようです。
    これはwp-cronでの実行と手動での実行とで検索結果が異なることに関係しているのでしょうか。
    因みにプラグインはすべて外して、テーマはデフォルトのもので試しています。

    他の人には再現性のない自分だけの問題??

    トピック投稿者 s-y-u

    (@s-y-u)

    グローバル変数の情報ありがとうございました。
    この辺、ソースを見てもコメントがないのでなにがなにやらさっぱりです。
    $wp_widget_factory を調べてみます。
    しかし、ワードプレスおもしろい!

    トピック投稿者 s-y-u

    (@s-y-u)

    nobitaさんとkjmtshさん情報ありがとうございました

    意味が分かりました!
    テーマカスタマイザーが今後なにかしら大きな発展をしていく予感と、ライブプレビューの現状が理解できました。
    特にkjmtshさんの情報で腑に落ちました。今のところテーマが単純なので速さの違いを実感できないですが、複雑になると違いが分かりそうですね。

    調べてみるとテーマカスタマイザーはwp_optionに値を格納するための手段でしかないようなので、テーマと連動として独自にやるには自分でテーマに沿ったUIを作るというのもありかもしれませんね。
    ありがとうございました。

    トピック投稿者 s-y-u

    (@s-y-u)

    すいません二重投稿してしまいました。削除ができないのですね!? 気をつけます。

    トピック投稿者 s-y-u

    (@s-y-u)

    情報ありがとうございました。
    教えてもらったキーワードで調べてみました。
    このような理解でよろしいでしょうか?

    1.サイドバーにウィジェットを自動的に登録するようなスタンダードな手段は用意されていない

    2.ウィジェットの登録情報はwp_optionsテーブルに格納されている

    3.ウィジェットはoption_nameがwidget_xxxで始まるレコードに格納されている

    4.サイドバーはoption_nameがsidebars_widgetsのレコードに格納されている

    5.登録情報には配列がシリアライズされた形で保存されている

    なので、wp_optionsの該当する箇所を書き換えればよい!?

    まず $wp_registered_widget_controls の値をvar_dump()して登録されているウィジェットのIDを調べる

    global $wp_registered_widget_controls;
    var_dump( $wp_registered_widget_controls );

    IDはウィジェット名にハイフンと番号が付くようですね。

    xxx-1

    2つ目は

    xxx-2

    みたいな。

    次にget_option()でsidebars_widgetsでサイドバーに登録されている配列を取得して

    $sidebar = get_option( ‘sidebars_widgets’ );

    登録したいサイドバーにウィジェットのIDを追加して

    $sidebar[ ‘サイドバー名’ ][0] = ウィジェット名xxx-1;

    update_option()で更新を掛ける。

    update_option( ‘sidebars_widgets’ , $sidebar );

    これで、ウィジェットが目的のサイドバーに登録されていました。

    ウィジェットを削除する場合は配列を削除すればウィジェットも削除される。

    unset( $sidebar[ ‘サイドバー名’ ][0] );
    update_option( ‘sidebars_widgets’ , $sidebar );

    登録するウィジェットの値を登録しておくにはget_option()でウィジェット名で配列を取得して

    $widget_hoge = get_option( ‘widget_hoge’ );

    配列を書き換えて

    $widget_hoge[ ID番号 ] = array( ‘key1’ => ‘値1’ , ‘key2’ => ‘値2’ …… );

    update_option()で更新を掛ける。

    update_option( ‘widget_hoge’ , $widget_hoge );

    削除はunsetで消して更新すればウィジェットの設定が消える。

    unset( $widget_hoge[ ID番号 ] );
    update_option( ‘widget_hoge’ , $widget_hoge );

    ID番号のところがウィジェットの数によって変わるようで、$wp_registered_widget_controls で調べておかないとダメみたいですね。

7件の返信を表示中 - 1 - 7件目 (全7件中)