WordPress

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

4
wp_editorのコンテンツを無害化する
によって生成された標準のtextarea / tinymceを見つけることができるカスタム投稿タイプを作成しwp_editor()ましたが、保存部分の問題に直面しています。 次のコードでコンテンツを保存すると、 update_post_meta( $post_id, $prefix.'content', $_POST['content'] ); すべてが正常に機能していますが、セキュリティはありません(サニタイズ、検証など...) 次のコードでコンテンツを保存すると、 update_post_meta( $post_id, $prefix.'content', sanitize_text_field($_POST['content']) ); セキュリティの問題は解決しましたが、コンテンツのスタイルやメディアなどがすべて失われています。 すべてのスタイルを適用し、メディアを挿入し、サニタイズを含めてコンテンツを保存する良い方法は何でしょうか? 少し読みましたが、wp_kses()どうすれば良いフィルターを適用できるのかわかりません。(一般的なタグを許可する場合、どちらをブロックすればよいですか?など)

3
投稿のないすべてのユーザーを一括削​​除するにはどうすればよいですか?
私は1万人のユーザーがいて、これらのユーザーの約98%が投稿を公開していません(つまり、コメントではなく投稿です)。 投稿が0のユーザーを一括削​​除する方法が必要です。 このメソッドは、カスタム投稿タイプを含むすべての投稿をカウントする必要があり、ユーザーがダッシュボードで手動で削除されたかのように、適切なWordPress関数を使用してユーザーを削除する必要があります。これは、予期しない結果を引き起こす可能性があるため、mysqlでテーブル/行をドロップするだけではありません。 これを行う古いプラグインがありますが、すべての投稿タイプを考慮しないため、実際には使用できません。 助けてくれてありがとう。
8 filters  users 

3
正しい方法でカスタムブログページテンプレートを作成する
ブログ投稿を表示するための新しいカスタムページテンプレートを作成したい。[設定]> [読み取り]で投稿を表示するページを割り当てると、home.phpがそのページコンテンツを表示するように割り当てられます。また、ページ編集ビューでページテンプレートを割り当てるオプションが表示されなくなります。 現在、デフォルトの記事が記事ごとに表示されます。管理者が別のテンプレートを選択して、ブログを格子状または組積造のレイアウトにすることができる別のオプションを提供したいと思います。これを行う方法がわかりません。 私はでそれを行うことができない割り当てることで、表示のブログへのページ>設定を読み込む管理エリアをして、管理ユーザーが使用してページに特定のテンプレートを割り当てることができる属性ページにページ編集にメニューをが、応じhttps://make.wordpress.org / themes / 2014/06/28 / correct-handling-of-static-front-page-and-custom-blog-posts-index-template /、これは間違った方法です。 私は解決策をグーグル検索してみましたが、私が見つけ続けるのはプラグインを使用するための推奨事項だけです。誰かが私にいくつかの役立つリソースを教えてもらえますか?

2
WP REST APIデフォルトのwp-json uri部分の名前を変更するのは簡単ですか?
WP REST APIは多くの情報を公開するため、公開する必要のないエンドポイントをフィルター処理します。 すべてをフィルタリングすることはできません。たとえば、必要なメディアファイルの場所が公開されています。 追加の保護として、デフォルトのURIをわかりやすく説明します。 私は、例えば変更したい:http://example.com/wp-json/wp/v2/に http://example.com/mistified/wp/v2/ これはかなり簡単ですか?
8 rest-api 

2
子テーマに必要なテキストドメインです
noobの質問でごめんなさい。 子テーマにテキストドメインは必要ですか?テキストドメインが宣言されていない単純な子テーマを構築しています。したがって、翻訳する文字列を使用する場合は、親テーマのテキストドメインを使用する必要があります(親テーマにはテキストドメインが読み込まれ、.mo / .poファイルも含まれます)。 たとえば、子のテーマテンプレートにこの行を追加する <?php __('Some String', 'parent-text-domain');> 上記の文字列は翻訳されますか? 前もって感謝します

1
wp_generate_attachment_metadataを使用してメディアライブラリにプログラムで画像を追加すると、ランダムに失敗する
PHPバージョン5.6.12のLAMPサーバー(共有ホスティング)で最新のWordPressバージョン(4.6)を実行しています。 私がしようとしているプログラムで10枚の画像を追加するFTPでアップロード、wp-uploadsディレクトリを、メディアライブラリに 3つのWordPressの機能を使用してwp_insert_attachment、wp_generate_attachment_metadataとwp_update_attachment_metadata。 私の問題: PHPスクリプトが動作する場合があります(10個の画像すべてがメディアライブラリに正しく追加されます)。各画像のサイズは2M〜4Mです。 これまでに行ったこと: php.iniでerror_loggingを有効にすると、たまにwp_generate_attachment_metadata失敗する(つまり、5番目、6番目、7番目のイメージの処理中に)失敗し、PHPスクリプト全体が終了することがわかりました。それ以外は、error_log()からこれ以上情報を取得しません。メモリの問題が疑われたため、phpのメモリサイズを120M(私のホスティングプロバイダーから128Mに)に増やし、スクリプトの実行を100に(私のホスティングプロバイダーから120sに)しました。すべてのファイルが(もちろん)存在し、それらはすべてPNGです。そして、前述のように、テスト用に同じ10個の画像のセットを使用すると、動作する場合と動作しない場合があります... 私の質問: wp_generate_attachment_metadataWP 4.6に既知の問題がありますか?私のサイトをWP 4.3から4.6にアップグレードするまで、すべてが正常に機能していました... 十分なメモリが問題の原因である場合、Webホスティング業者から与えられた128Mのメモリ制限を処理するようにPHPスクリプトを最適化するにはどうすればよいですか? メモリ不足が原因でPHPスクリプトが終了するかどうかを確認するにはどうすればよいですか? 前もって感謝します! これが私のコードです: $post_id = 1234; $images = array('filename1.png', 'filename2.png', ... 'filename10.png'); for($i = 0; $i < 10; $i++) { $attachment = array( 'post_mime_type' => 'image/png', 'post_title' => 'my description', 'post_content' => 'my description', 'post_status' => 'inherit' ); …

1
カスタム投稿タイプのコメントとトラックバックがまだ機能しているのはなぜですか?
コメントやトラックバックが不要なサイトがあります。 トラックバックを無効にするために、次のことを行いました。 [設定]> [ディスカッション]で、[他のブログからのリンク通知を許可する(ピンバックとトラックバック)]チェックボックスをオフにします。 「ユーザーが新しい記事にコメントを投稿できるようにする」のチェックを外します。 以前に公開されたものについては、コメントとトラックバックを元に戻し、無効にしました。 これは投稿とページでうまく機能しますが、カスタム投稿タイプのランダムなコメントとトラックバックは引き続き得られます。 これで、カスタム投稿タイプの投稿タイプサポートを削除できることがわかりました。ただし、カスタム投稿タイプ定義でコメントの「サポート」引数を明示的に設定していません。コーデックスでは、デフォルト設定では、「サポート」の値を設定しない場合、カスタム投稿のみがタイプサポートは、タイトルと説明のフィールドです。 誰かがまだトラックバックとコメントを受け取っている理由を誰かが私に理解するのを手伝ってくれる? また、どうすればそれらを停止できますか?

3
ページ固有のスクリプト/スタイルをロードする方法
私はデフォルトのWordpressの起動プロセスに従って、最初functions.phpに呼び出され、その後すべてのテーマのものに行くことを知っています。しかし、私は現在、テーマを完全にリファクタリングして最適化しています。私のアイデアは、共通のプロパティ、正規化、色用の1つの基本cssファイルを用意することです。または、単一のCSSファイルを保持するために、この場合、functions.phpページを決定するためにスイッチケースをハードコーディングする必要があります。また、すべてのスタイルが定義された巨大なcssスタイルファイルをロードすることは意味がないため、各ページに固有の別のファイル。 だから私の質問は、特定のスクリプト/スタイルをロードするためにフックするのに最適な場所は何ですか? それはheader-xxx.php別のファイルですか?多分このアイデアをよりスケーラブルでエレガントな方法で実装する方法はありますか? どんな助けにも感謝します。

1
WordPressでの適切な単体テスト
WordPressの単体テストにはさまざまなスレッドがあります。限りでは、WordPressで行われたすべてのカスタマイズに対して適切なユニットテストを行う必要があります。 私はいくつかのプラグインと同じものについての記事をチェックしました。ここにいくつかあります。 http://codex.wordpress.org/Theme_Unit_Test http://wptest.io/ https://make.wordpress.org/core/handbook/testing/automated-testing/phpunit/ これで、PHPユニットを使用して、必要に応じてテストケースを作成できます。コア機能とカスタマイズのためにテストケースを作成できます。 ヘビープラグインとカスタマイズを備えたテーマの自動ユニットテストについてはどうですか。メガメニュー、ビジュアルコンポーザー、Woo Commerceのカスタマイズなど。 これはどのように行うことができますか?高度なカスタマイズが可能なプレミアムテーマとプラグインで開発されたサイトのユニットテストの標準はありますか?

1
アーカイブページと単一投稿のカスタム書き換えルール
いくつかのカスタム投稿タイプを使用してWordpressサイトを構築しています。すべての投稿タイプは異なる雑誌です。雑誌の年号用のカスタムメタフィールドもあります。 私はURLを使用したいと思います(archive.phpを使用): http://my_site/magazine/name/ http://my_site/magazine_name/year/ http://my_site/magazine_name/year/issue/ 私はコードでそれを作りました: function magazine_rewrite_tag() { add_rewrite_tag('%issue_year%', '([0-9]{4})'); add_rewrite_tag('%issue%', '([0-9])'); } add_action('init', 'magazine_rewrite_tag', 10, 0); そして: function magazine_rewrite_rules() { add_rewrite_rule('^([a-z]+)/([0-9]{4})/([0-9])?', 'index.php?post_type=$matches[1]&issue_year=$matches[2]&issue=$matches[3]', 'top'); add_rewrite_rule('^([a-z]+)/([0-9]{4})?', 'index.php?post_type=$matches[1]&issue_year=$matches[2]', 'top'); } add_action('init', 'magazine_rewrite_rules'); もちろん、archive.phpにもカスタムクエリがあります。そしてそれはうまくいきます。 しかし、今、私の単一の記事のURLは機能しません。デフォルトでは、次のとおりです。 http://my_site/magazine/post-title しかしそれはurlのような雑誌からのすべての記事を表示します(そしてそれはarchive.phpテンプレートを使用しました): http://my_site/magazine/ 単一のカスタム投稿に適切に書き換えルールを追加するにはどうすればよいですか?可能です。次の形式で単一の投稿(選択したカスタム投稿タイプのみ)のURLが必要です。 http://my_site/magazine/year/issue/post-title

4
投稿を取得するWP_Queryを完全に停止することは可能ですか?
WP Redisを使用して、キーが$ query_vars_hashの$ wp_queryオブジェクト全体をキャッシュしようとしています。 これは以下$wp_queryに追加された方法$wp_object_cacheです: add_action('wp', function($wp) { if ( is_admin() ) return; global $wp_query; if ( !wp_cache_get($wp_query->query_vars_hash, 'globals') ) { wp_cache_add($wp_query->query_vars_hash, $wp_query, 'globals'); } }); 次に、WP_Query投稿を取得する前に、クエリが既にキャッシュされているかどうかを確認する必要があります。 add_action('pre_get_posts', function($query) { if ( is_admin() ) return; $cached_query = wp_cache_get($query->query_vars_hash, 'globals'); if ($cached_query) { $GLOBALS['wp_query'] = &$cached_query; return; // Return immediately to …
8 wp-query  hooks  cache 

1
wp_insert_post add meta_input
のドキュメントにwp_insert_postは、ページの半分に次のような変更ログがあります: 以降:WordPress 4.4.0 'meta_input'配列を$ postarrに渡して、ポストメタデータを追加できるようになりました。 Wordpress 4.4.2を使用しています。次のコードを実行して、新しい投稿を追加します。 function handle_post($post) { wp_insert_post( array( 'post_title' => $post['title'], 'post_type' => 'werknemers', 'meta_input' => array( array( 'key' => 'name', 'value' => $post['name'] ), array( 'key' => 'city', 'value' => $post['city'] ) ) ) ); } 投稿はデータベースに追加されますが、メタデータはありません。このスタックポストを見つけましたが、の実装方法がわかりませんif statement。 分類法(tax_input)を追加する方法にも興味があります。

3
送信メールにヘッダーを追加する方法は?
サイトの送信メールにヘッダーを追加したいので、特定のメールを送信したサイトを簡単に特定できます。(私はすべてのサイトに標準機能プラグインを配置しているので、これは簡単に実行できます。メールヘッダーをフィルターに設定し、このヘッダーを操作するように構成すると、時間を大幅に節約できます。) これはwp_mail関数にプラグインするという単純な問題だと思っていましたが、明らかにそうではありません。 まず、私はこれを試しました: add_filter('wp_mail', 'ws_add_site_header'); function ws_add_site_header() { return array('headers' => 'X-WU-Site: ' . parse_url(get_site_url(), PHP_URL_HOST)); } ここで、私の配列はメール設定を変更した他のもの(たとえば、Gravity Forms)よりも優先されたため、HTMLメールは裸のHTMLとして表示され、適切にフォーマットされませんでした。GFが追加したContent-type:ヘッダーがスクラブされているため、理にかなっています。しかし、私のヘッダーはメールに追加されました。他の人もかなりのメールを受信することに依存しているため(私のサイトのすべてのコンテンツ開発者とエンドユーザー、とりわけ私は確信しています)、それは受け入れられません。 次に、私の同僚の1人が、wp_parse_args()を使用して自分のものをルーティングすることを提案しました。 add_filter('wp_mail', 'ws_add_site_header'); function ws_add_site_header($args) { $new_header = array('headers' => 'X-WU-Site: ' . parse_url(get_site_url(), PHP_URL_HOST)); return wp_parse_args($args, $new_header); } これで、私の機能が存在しないかのように見えます-私のヘッダーは追加されませんが、他のヘッダーもメール設定も削除されません。 存在する可能性のある他のフィルターをスクランブルすることなく、送信メールにヘッダーを追加する正しい方法は何ですか?

3
ホームページクエリを削除する
home.phpテンプレートを表示するホームページに、ウィジェットを含む2つのサイドバーが含まれています。 メインクエリは引き続き標準の10件の投稿を取り込みますが、これらを表示していないため、データベースに対して行われるクエリを完全に削除します。必要に応じて、home.phpテンプレートでメインループを使用していないので、空のポストループで十分です。 どうすればいいですか?pre_get_postsクエリを最小化および削減するために使用できますが、それでも非常に高速なクエリが残ります。どうすれば完全に削除できますか?
8 loop  query  homepage 

1
例外vsエラーオブジェクトvs単なるfalse / nullを使用する場合
私はプラグインを作成中であり、エラー処理の異なるアプローチをいつ使用するかを判断しようとしています。 私が検討している3つの方法があります: 例外のスロー(カスタムクラス) エラーオブジェクトを返す(WP_Errorの拡張) null / falseを返すだけ 私が考えているいくつかの状況 存在しないレジストリに保存されているオプションを取得または設定しようとしています メソッドに無効な値を渡す(まれなはずです) クラスのオーバーローダーが解決できないメソッドを呼び出す 提案?WordPressプラグインの作成には特別な考慮事項があるため、これを一般的なPHPボードで質問する価値があるかどうかはわかりません。

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