WordPress

WordPressの開発者および管理者向けのQ&A

4
プラグインでカスタム投稿タイプのカスタムアーカイブページを作成する
「my_plugin_lesson」という名前のカスタム投稿タイプを作成するプラグインを書いています。 $args = array ( 'public' => true, 'has_archive' => true, 'rewrite' => array('slug' => 'lessons', 'with_front' => false) ); register_post_type ('my_plugin_lesson', $args); カスタム投稿タイプにはアーカイブがあり、アーカイブのURLは次のとおりです。 http://example.com/lessons このアーカイブの外観をカスタマイズしたい。標準のWordPressブログ投稿アーカイブではなく、表形式で投稿を一覧表示したい。archive-my_plugin_lesson.phpファイルを作成することで、テーマにカスタムアーカイブテンプレートを作成できることを理解しています。しかし、私はプラグインが任意のテーマで動作することを望みます。 テーマファイルを追加または変更せずにアーカイブページのコンテンツを変更するにはどうすればよいですか? 編集:archive_templateフィルターフックを 使用できることを理解しています。ただし、これはテーマテンプレートを置き換えるだけであり、テーマ固有である必要があります。たとえば、すべてのテーマのテンプレートが必要になりますちょうど約get_header、get_sidebarおよびget_footer機能を、しかし、コンテンツのIDが何をすべき<div>こと?これはテーマごとに異なります。 私がやりたいのは、コンテンツ自体を自分のコンテンツに置き換え、それをカスタム投稿タイプのアーカイブページの代わりに使用することです。

1
コンテンツをプレーンテキストで表示する方法
抜粋をプレーンテキストで表示したい。これどうやってするの? これは私がコンテンツを表示する私のスニペットです: <?php the_content(__( 'Weiterlesen ›','okay')); ?> コンテンツをプレーンで表示するようにスニペットを変更するにはどうすればよいですか? あいさつ、ニクラス


2
ナビゲーションアイテムからページIDを取得する
ナビゲーション内のすべてのIDを取得し、それを文字列に変換して、ナビゲーションでwp_queryのみ表示されるページを取得するために使用できるようにしています。IDを取得するコード: $menu_name = 'primary'; if ( ( $locations = get_nav_menu_locations() ) && isset( $locations[ $menu_name ] )) { $menu = wp_get_nav_menu_object( $locations[ $menu_name ] ); $menu_items = wp_get_nav_menu_items($menu->term_id); } foreach ( $menu_items as $menu_item ) { $numbers[] = $menu_item->ID; } $number = implode(',',$numbers); しかし、それは間違った数を返しています。管理領域に移動し、マウスをページの上に置くと、画面下部のアドレスバーに表示される数字が一致しません。何が悪いのですか?
11 menus  id 

2
テーマがアクティブかどうかを確認するにはどうすればよいですか?
21のテーマがアクティブかどうかを確認したいのですが。アクティブなプラグインをチェックしていたかどうかはわかっています。 $active_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins' ) ); if ( in_array( 'plugin-folder/plugin-folder.php', $active_plugins ) ) { //do stuff } else { add_action( 'admin_notices', 'create-a-notice' ); } テーマがアクティブかどうかを確認して、そのテーマの関数を実行できるようにする適切な方法は何ですか?

2
WooCommerceで完了した注文に2つ目のメールアドレスを追加する[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新することがありますので、上のトピックワードプレスの開発スタックExchange用。 5年前休業。 この質問をする前に、Woo製品について独自のサポートがあり、ユーザーがそれを使用するように勧められるため、ここで質問に答える(正当な)ためらいがあることを知っています。私は有料のWooユーザーですが、有料サポートではこれを解決できませんでした。私の質問はWPのクラスをオーバーライドすることについてですので、公正に聴取されることを願っています。 私の質問:完了した注文メールが顧客に送信されると、このメールを逐語的かつ自動的に受け取る必要があります。これは、さまざまな請求書PDFによって作成されるような他の形式ではなく、顧客に送信されるのとまったく同じです。 WooCommerceのプラグイン。私は次の行を変更することで非常に簡単にこれを達成できます/woocommerce/classes/emails/class-wc-email-customer-completed-order.php: $this->send( $this->get_recipient(), $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() ); 読む: $this->send( $this->get_recipient(), $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() ); $this->send( me@myemail.com, $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() ); ただし、明らかに、このようなハックはアップグレード後も存続しません。WooCommerceテンプレートをオーバーライドする子テーマがあります。同様にカプセル化された方法でクラスをオーバーライドできる同等のメカニズムはありますか?または、顧客が受信したときにこのメールを受信するという特定のタスクを実行するために、(SMTPサーバーをすべての送信メールを2番目のアドレスにbccするように設定する以外に)別のアプローチをお勧めできますか?

4
functions.phpで管理者以外の場合のみ「クイック編集」を無効にする
これは私のfunctions.phpにあります function remove_quick_edit( $actions ) { unset($actions['inline hide-if-no-js']); return $actions; } add_filter('post_row_actions','remove_quick_edit',10,1); 公開された投稿のリストをスクロールするときに、バックエンドのクイック編集リンクを削除します。 チャームのように機能しますが、管理者の役割でも無効にします。残りを無効にしながら、管理者のみに表示することは可能ですか?ありがとう! jfacemyerのおかげで解決しました! これはfunctions.phpに追加する完全なコードです function remove_quick_edit( $actions ) { unset($actions['inline hide-if-no-js']); return $actions; } if ( ! current_user_can('manage_options') ) { add_filter('post_row_actions','remove_quick_edit',10,1); }
11 quick-edit 

2
Ajaxリクエストごとに一意のナンスを取得するにはどうすればよいですか?
Wordpressに後続のAjaxリクエストのための一意のナンスを再生成させることについてのいくつかの議論を見てきましたが、私の人生では、実際にWordpressにそれを実行させることはできません-新しいと思うものをリクエストするたびにノンス、私はワードプレスから同じノンスを取り戻します。私はWPのnonce_lifeの概念を理解し、それを他の何かに設定することさえ理解していますが、それは私を助けませんでした。 ローカリゼーションを介してヘッダーのJSオブジェクトにnonceを生成しません。表示ページで生成します。Ajaxリクエストを処理するためにページを取得できますが、コールバックでWPから新しいノンスをリクエストすると、同じノンスが返され、何が間違っているのかわかりません...最終的にはこれを拡張して、ページに複数のアイテムがあり、それぞれが追加/削除できるようにする-したがって、1つのページからの後続の複数のAjaxリクエストを許可するソリューションが必要です。 (そして、私はこの機能のすべてをプラグインに組み込んだと言うべきです。したがって、フロントエンドの「表示ページ」は実際にはプラグインに含まれている関数です...) functions.php:ローカライズしますが、ここではナンスを作成しません wp_localize_script('myjs', 'ajaxVars', array('ajaxurl' => 'admin-ajax.php'))); JSを呼び出す: $("#myelement").click(function(e) { e.preventDefault(); post_id = $(this).data("data-post-id"); user_id = $(this).data("data-user-id"); nonce = $(this).data("data-nonce"); $.ajax({ type: "POST", dataType: "json", url: ajaxVars.ajaxurl, data: { action: "myfaves", post_id: post_id, user_id: user_id, nonce: nonce }, success: function(response) { if(response.type == "success") { nonce = response.newNonce; …
11 ajax  nonce 

1
フロントエンドにadmin_noticesのようなものはありますか?
私はWordpressに不慣れで、フレームワークをできるだけ活用しようとしています。フロントエンドでは、一元化されたメッセージ領域にエラー、成功、および一般的な通知を表示するために、バックエンドのadmin_noticesを介してそれらが処理される方法に似ています。フロントエンドに同様のフックがありません。 admin_noticesを模倣するために、フロントエンドでフックする必要があるアクションを尋ねていると思いますか?

3
カスタム投稿タイプの作成者を変更するにはどうすればよいですか?
カスタム投稿タイプを作成しました。投稿を作成し、それらを著者に割り当てることができるようにする必要があります。一括編集画面に移動して作成者をすぐに変更できるので、投稿でこれを行うのは簡単です。しかし、カスタム投稿タイプでこれを行おうとすると、作成者ボックスがありません。カスタム投稿タイプの作成者を変更する機能を追加するにはどうすればよいですか? 編集:私は解決策を見つけました、以下の答えを見てください。

2
MultiSiteインストールをHTTPからHTTPSに切り替える
URLをhttp://example.comに設定してMultiSiteをインストールしましたが、すべてのリクエストを強制的にHTTPS経由で送信したいので、URLをhttps://example.comに変更しようとしています。データベースを調べ、すべてのsiteurlおよびhome値をhttpsに更新しましたが、サイトはHTTPSにリダイレクトされるのではなく、HTTP経由でロードされます。 いくつかのhtaccessルールを設定できることは知っていますが、エラーが発生しやすくなります。通常のインストールでは、WordPressはすべてのリクエストをsiteurlおよびhome設定で定義された正規URLSに自動的にリダイレクトするため、MultiSiteもそうすることを想定しています。

3
「/ page / 2 /」が機能しないのはなぜですか?
最後に、ページネーションが以下のコードで機能するようになりましたが、ページネーションは、存在しない/ videos / page / 2 /にリンクしています。ページ2を機能させるにはどうすればよいですか? <?php $temp = $wp_query; $wp_query= null; $wp_query = new WP_Query(); $wp_query->query('post_type=videos&showposts=1'.'&paged='.$paged); while ($wp_query->have_posts()) : $wp_query->the_post(); //display stuff endwhile; php wp_pagenavi(); ?>

2
current_shortcode()-現在使用されているショートコードを検出します
プラグインクラスで、公開データ用の単純なフィールドを提供したいと思います:メール、電話番号、Twitterなど。リストは拡張できます。 詳細については、GitHubのプラグインPublic Contact Dataを参照してください。 使い方を簡単にするために、入力しやすいショートコードも提供したいと思います。 [public_email] [public_phone] [public_something] 唯一の違いは2番目の部分です。ショートコードはエラーが発生しやすいので、これ以上の引数は必要ありません。そこで、プラグインクラスのすべてのフィールドに1つのショートコードハンドラーを登録します。 foreach ( $this->fields as $key => $value ) { add_shortcode( 'public_' . $key, array( $this, 'shortcode_handler' ) ); } ここで、shortcode_handler()どのショートコードが呼び出されたかを知る必要があります。私の質問は、どうすればよいですか? 私の現在の回避策は別の関数です: protected function current_shortcode() { $backtrace = debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS ); return $backtrace[3]['args'][0][2]; } これは…のために働きthe_content()ます。しかし、エレガントでも堅牢でもありません。 私はを読みましたがwp-includes/shortcodes.php、今はそれをよりよくする方法がわかりません。

3
特定のページのみのスタイルシートを条件付きでエンキューするにはどうすればよいですか?
始める前に、ページ/投稿のコンテンツに基づいてスクリプトを条件付きでエンキューする方法を対象とする本当に良い記事があることを認めたいと思います。 WordPressプラグイン開発-投稿で必要な場合にのみ、条件付きでCSSとJavaScriptを含める方法 WordPressマスターのようにJavaScriptをロードする方法 これらは素晴らしいですが、私がやりたいことよりもはるかに進んでいます。 答えは組み込みis_page()関数(codex)を使用しているように感じますが、それを使用しようとすると、サイトが壊れるか、機能しません。 条件付きロジックを間違った場所で実行しているだけだと思います。 これが、functions.phpに追加しようとしたものです。 function wpse39130_register_more_stylesheets() { wp_register_style( 'stylesheet_name', get_stylesheet_directory_uri() . '/stylesheet.css' ); } add_action( 'init', 'wpse39130_register_more_stylesheets' ); function wpse39130_conditionally_enqueue_my_stylesheet() { // only enqueue on product-services page slug if ( is_page( 'products-services' ) ) { wp_enqueue_style( 'stylesheet_name' ); } } add_action( 'wp_enqueue_scripts', 'wpse39130_conditionally_enqueue_my_stylesheet' ); 条件付きの部分を削除すると、スタイルシートが正常にキューに登録されるので、それが機能することがわかります。

3
author.phpのエコー作成者ID
これはおそらく非常に単純な質問です。 しかし、author.phpでユーザーのIDをエコーするにはどうすればよいですか? 私はもう試した the_author_meta('ID') しかし、それは働きたくないようでした。たとえば、URLの最後にエコーしたいです。 http:///www.domain.com/author/sampleauthor-id 明らかに、「id」はその特定の著者のIDです。 何か案は?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.