WordPress

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


12
公開されたページまたは投稿の改訂を起草する方法はありますか?どのような回避策を使用しましたか?
すでにページまたは投稿を公開したとします。私は今、変更を加えたいのですが、同僚がライブに移行する前にそれらをチェックしたいです。これを行う方法はありますか? 編集:これは現時点では不可能であり、私が興味を持っている創造的な回避策です。 現在作業中のサイトには、主要なコンテンツの変更/追加を作成するための別のパスワード保護された「ステージング」サイトもあり、承認されると、ライブサイトにコピーアンドペーストします。誰かが同様の方法を使用しているかどうか疑問に思っていますが、おそらくライブサイトへの「プッシュ」を自動化しましたか? 私はこの質問を知っています:dev / stagingとproductionの間のデータベース同期ですが、それは個々のページや投稿ではなく、データベース全体の大規模な同期についてです。 回避策のためのいくつかの追加のアイデアを試してみるために、今は賞金を提供しています。
38 draft 

1
プラグイン開発にカスタム投稿タイプまたはカスタムデータベーステーブルを使用する必要がありますか?
私はワードプレスプラグインを書くのはかなり新しいですが、私はすでに深い終わりに飛び込んできましたので、今後の大きなプロジェクトでそれが「正しく」行われるようにしたいと思います。 私はWordPressをかなり大きなWebアプリに大幅に拡張し、WordPressフレームワークに依存するためにデータ構造をできるだけネイティブに保ちたいと思っていますが、独自のカスタムデータベーステーブルを作成する方が良いかどうかわかりませんまたは、カスタム投稿タイプを使用してみてください。 私はまだすべてのデータを知りませんが、多くのテーブル(またはcpt)がリレーショナルにリンクされます。カスタムデータベーステーブルを避ける必要があるという調査から「バイブ」を取得しますが、最適なソリューションを決定する方法がわかりません。 具体的には、次の3つの領域が心配です。 そのルートに行くと、それが物事を「トリッキー」にする場合、cptごとに余分なフィールドに必要なポストメタフィールドの数 レポート用の半複雑なリレーショナルフィルターを使用してクエリをどれだけうまく取得できるか 特に多対多の関係がある場合、関係を最適に管理する方法 「正しい」方法はありますか?ご意見ありがとうございます。

5
投稿ステータスのあるすべての投稿を取得する方法は?
現在のユーザーによるすべての投稿を表示する必要があるフロントエンドダッシュボードを作成しています。だから、私は主に、すべての状態で記事を表示する必要がありpublished、trashedそしてpending。現在、単純なクエリを使用していますが、公開された投稿のみを返しています。 $query = array( 'post_type' => 'my-post-type', 'post_author' => $current_user->ID ); query_posts($query); 誰でも助けることができますか?他に何をする必要がありますか?

7
add_actionはクラスを参照します
'add_action'で関数の代わりにクラスを参照することは可能ですか?理解できないようです。問題の関数の基本的な例を次に示します。 add_action( 'admin_init', 'MyClass' ); class MyClass { function __construct() { .. This is where stuff gets done .. } } ええ、それはうまくいきません。私も試しました: $var = new MyClass(); add_action( 'admin_init', array( &$var ) ); そして: $var = new MyClass(); add_action( 'admin_init', array( &$var, '__construct' ) ); そしてまた: add_action( 'admin_init', 'MyClass::__construct' ); とにかく、クラスをロードする別の関数を作成せずにこれを行うことができますか?add_actionを介してクラスコンストラクターを実行できるようにしたいだけです。ボールを転がすためにロードする必要があるのはそれだけです。
38 actions 

10
WordPress開発にはどのプロセスを使用しますか?[閉まっている]
WordPressのテーマとプラグインを他の人がどのように開発しているかに興味があります。私にとって、管理パネルのブラウザ内エディタは、それをカットしません。現在、PHPプラグイン(NetBeans)を備えたIDEを使用して、サーバーから開発Webディレクトリを取得し、そこで編集し、テスト用にプッシュしてから、ライブに移行しています。 テーマ、プラグインの開発、テスト、展開、最新バージョンのWordPressのテスト、展開のワークフローを管理するために、他の人が選択したツールを使用する方法を探しています。 これをコミュニティWikiにして、他の人が開発プロセスを共有できるようにしました。私はここで唯一の正解を見つけることを期待していません-あなたのプロセスはあなた自身のものであり、私はあなたが自分自身や他の誰かのために働くために何をするかを期待しません。私は、他の人にとって何がうまくいくか、何がうまくいかないかを見ることによって、プラグインとテーマを開発する能力を向上させることに興味があります。 ここでの別の質問では、WordPress開発をサポートする特定のソフトウェアツールについて説明します。ここでは、特定のツールファミリーでしか達成できない特定のタスクを除き、ツールとは無関係に適用できるプロセスと方法論を探しています。

5
WP 4.4でレスポンシブイメージを無効にするにはどうすればよいですか?
4.3.1インストールをすべてのhttpsに正常に変換しました。4.4に更新した後。新しいsrcset属性に問題があります。一方でsrc、画像の属性は、HTTPSを使用して設定され、srcset属性は、httpです。これにより、ブラウザで画像がまったく表示されなくなります。 より良い修正を待っている間srcset、すべての画像がsrc属性のみを持つように属性の設定を完全に無効にしたいと思います。それ、どうやったら出来るの?

2
静的フロントページの投稿IDを取得する方法は?
特集画像のデフォルトのソートとしてフロントページを使用しようとしています(特集画像が設定されていない場合、フロントページなどを使用したい) しかし、私はフロントページの投稿IDを安全な方法で取得する方法を見つけるのに苦労しています(フロントページが誰かによって必然的に変更されたときに私のコードが引き続き機能するように) コードにIDをハードコーディングすることはできますが、誰かが新しいコンテンツアイテムをフロントページとして使用することに決めた場合、それは壊れます。 これを達成するにはwp-queryを使用する必要がありますか?もしそうなら、wp-queryでこれを達成する安全な方法は何ですか?

1
カスタムフィールド(検索機能)を使用して(WPダッシュボードの投稿リストで)投稿リストをフィルターする方法
私はたくさんグーグルで検索したという事実にもかかわらず、私は非常に簡単な質問への答えを見つけていません。 カスタムフィールド(supplier_name)を含む投稿がいくつかあります。このカスタムフィールドに従って、投稿を検索およびフィルタリングできるようにしたいと思います。言い換えると、管理者の投稿リストに値(「IBM」など)を入力できる検索ボックス(「サプライヤー名」という名前)があり、検索ボタンをクリックして、 「supplier_name」という名前のカスタムフィールドを持つすべての投稿を返してください。その場合、カスタムフィールドの値は「IBM」になります。 これどうやってするの ?


8
ショートコードのJavaScript / CSSの条件付きロード
ショートコードを作成するプラグインをリリースし、そのショートコードを含むページに読み込むにはJavaScriptファイルとCSSファイルが必要です。スクリプト/スタイルをすべてのページにロードすることもできますが、それはベストプラクティスではありません。ショートコードを呼び出すページにファイルをロードするだけです。これを行うには2つの方法がありますが、どちらにも問題があります。 方法1は、ショートコードハンドラー関数内でフラグをtrueに設定し、wp_footerコールバック内でその値を確認します。trueの場合wp_print_scripts()、JavaScriptのロードに使用されます。これに伴う問題は、CSSが内部で宣言されなければならないので、それだけで、JavaScriptとCSSでないために働くということである<head>あなただけのような初期のフックの間に行うことができます、initまたはwp_head。 方法2は早期に起動し、「先読み」して、現在のページコンテンツにショートコードが存在するかどうかを確認します。このメソッドは最初のメソッドよりもはるかに優れていますが、テンプレートがを呼び出すかどうかの問題は検出されませんdo_shortcode()。 したがって、私は2番目の方法を使用して、テンプレートが割り当てられているかどうかを検出し、割り当てられている場合はそれを解析してショートコードを取得しようとしています。しかし、その前に、誰かがより良い方法を知っているかどうかを確認したかったのです。 更新:ソリューションをプラグインに統合しました。誰かがそれがライブ環境で肉付けされているのを見たいと思うなら、それをダウンロードするか、それをブラウズすることができます。 更新2: WordPress 3.3では、ショートコードコールバック内で直接呼び出すwp_enqueue_script()ことが可能になり、ドキュメントのフッター内でJavaScriptファイルが呼び出されます。CSSファイルでも技術的には可能ですが、<head>タグの外部にCSSを出力するとW3Cの仕様に違反し、FOUCが発生し、ブラウザにページの再レンダリングを強制する可能性があるため、悪い習慣と見なされます。

7
wp_mail()を介してマルチパート(テキスト/ html)メールを送信すると、ドメインが禁止される可能性があります
概要 そのためWPコアのバグのため、送信マルチパートで電子メール(HTML /テキスト))(wp_mail(スパムフォルダで終わるメールの可能性を減らすために)します皮肉なことに、あなたのドメインがホットメール(およびその他のMicrosoftの電子メール)によってブロックされているとなります。 これは複雑な問題であり、最終的にコアに実装される可能性のある実行可能なソリューションを誰かが見つけられるように、詳細に分析することを目指します。 やりがいのある読み物になるでしょう。さぁ、始めよう... 不具合 ニュースレターの電子メールがスパムフォルダーになってしまうことを避けるための最も一般的なアドバイスは、マルチパートメッセージを送信することです。 マルチパート(MIME)は、1つの電子メールで電子メールメッセージのHTML部分とTEXT部分の両方を送信することを指します。クライアントがマルチパートメッセージを受信すると、HTMLをレンダリングできる場合はHTMLバージョンを受け入れ、そうでない場合はプレーンテキストバージョンを提示します。 これは機能することが証明されています。Gmailに送信すると、メインの受信トレイに到達したときにメッセージをマルチパートに変更するまで、すべての電子メールがスパムフォルダーに到着しました。素晴らしいもの。 現在、wp_mail()を介してマルチパートメッセージを送信する場合、コンテンツタイプ(multipart / *)を2回出力します。この動作は、すべての Microsoft(Hotmail、Outlookなど)を含む一部の電子メールでは生のメッセージとして表示され、マルチパートではない電子メールで発生します Microsoftはこのメッセージに迷惑メールのフラグを付け、受信したいくつかのメッセージには受信者が手動でフラグを付けます。残念ながら、Microsoftの電子メールアドレスは広く使用されています。サブスクライバーの40%が使用しています。 これは、Microsoftが最近行ったメール交換で確認されています。 ドメインが完全にブロックされると、メッセージにフラグが立てられます。つまり、メッセージはスパムフォルダーに送信されず、受信者にも配信されません。 これまでにメインドメインを3回ブロックしました。 これはWPコアのバグであるため、マルチパートメッセージを送信するすべてのドメインがブロックされています。問題は、ほとんどのウェブマスターが理由を知らないことです。私は調査を行い、他のユーザーがフォーラムなどでこれを議論しているのを見て、これを確認しました。それは生のコードを掘り下げ、これらのタイプの電子メールメッセージがどのように機能するかについての十分な知識が必要です。 コードに分解しましょう hotmail / outlookアカウントを作成します。次に、次のコードを実行します。 // Set $to to an hotmail.com or outlook.com email $to = "YourEmail@hotmail.com"; $subject = 'wp_mail testing multipart'; $message = '------=_Part_18243133_1346573420.1408991447668 Content-Type: text/plain; charset=UTF-8 Hello world! This is plain …
37 email  wp-mail  bug 

12
メタ値をシリアル化配列として持つmeta_query
私は、カスタム投稿タイプと、カスタム投稿タイプに関連付けられたメタボックスを介して入力されたカスタムデータを作成するプロジェクトに取り組んでいます。何らかの理由で、各メタボックスの入力が配列の一部になるようにメタボックスをコーディングすることにしました。たとえば、経度と緯度を保存しています: <p> <label for="latitude">Latitude:</label><br /> <input type="text" id="latitude" name="coordinates[latitude]" class="full-width" value="" /> </p> <p> <label for="longitude">Longitude:</label><br /> <input type="text" id="longitude" name="coordinates[longitude]" class="full-width" value="" /> </p> 何らかの理由で、各メタボックスに単一のポストメタエントリを作成するというアイデアが気に入りました。オンsave_postフック、私はそうのようなデータを保存します。 update_post_meta($post_id, '_coordinates', $_POST['coordinates']); 私がこれを行ったのは、3つのメタボックスがあり、各投稿に3つのpostmeta値があるだけだからです。しかし、これで潜在的な問題に気づきました。WP_Queryを使用して、これらのメタ値に基づいて特定の投稿のみを引き出したい場合があります。たとえば、緯度の値が50を超えるすべての投稿を取得したい場合があります。データベースにこのデータが個別にあり、おそらくキーを使用してlatitudeいた場合、次のようにします。 $args = array( 'post_type' => 'my-post-type', 'meta_query' => array( array( 'key' => 'latitude', 'value' => '50', 'compare' => '>' ) …

2
Meta_query比較演算子の説明
meta_queryで比較に使用できる演算子がたくさんあることに気付きました。しかし、私は私が使用すべきかをオペレータはかなりわからない、それは何らかの形のように混乱している=とLIKEオペレータ。 各演算子の正確な意味と、それらを使用する条件を知りたいです。 = != > >= < <= LIKE NOT LIKE IN NOT IN BETWEEN NOT BETWEEN NOT EXISTS ありがとう。

12
メタ値で並べ替えるが、メタ値を持たない投稿を含める
pre_get_postsフィルターを使用して組み込みのWP検索を変更し、ユーザーがさまざまなフィールドで投稿(カスタム投稿タイプの束を含む)をソートできるようにしました。 私が抱えている問題は、メタ値でソートするようにWPに指示すると、そのメタ値が設定されていないすべての投稿が除外されることです。これにより、「投稿」には「価格」が設定されていないが「アイテム」には設定されているため、ソートを「価格」から「日付」に変更すると、結果の数が変更されます。 これは私が望むものではないので、すべての投稿を含める方法があるかどうかを知りたいです-私がソートしているメタ値を欠いているものも含めて-そして値のないものを最後に置きます。 複数のフィールドでソートする方法は知っていますが、それは役に立ちません。 ありがとう 私がこの質問を持っているのは私だけではないようです:wp_queryの引数に特定のmeta_keyのある投稿とない投稿の両方を含める方法?しかし、解決策はありません。 更新 私は答えを試してみましたが、私が正しく理解したかどうかはわかりません。ここに私が今持っているものがあります: <?php function my_stuff ($qry) { $qry->set('meta_query', array(array( 'key' => 'item_price', 'value' => '', 'compare' => 'NOT EXISTS' ))); $qry->set('orderby', 'meta_value date'); # Sorting works with meta_value as well as meta_value_num - I've tried both $qry->set('order', 'ASC DESC'); $qry->set('meta_key', 'item_price'); } メタ値は数値です(名前が示すように価格を保存するために使用されます) 更新2 …

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