web-dev-qa-db-ja.com

空のタイトルと空のコンテンツで投稿を公開する方法

なぜ私はこれをやっているあなたが求めるかもしれませんか?ギャラリーアイテムが投稿されているポートフォリオを持つビジネス向けのWebサイトを開発しています。これらの投稿は、カスタムフィールドとカテゴリ選択を介して入力されます。

それぞれのアイテムについて、タイトル/コンテンツがあってもなくてもかまいません、それは問題のアイテムに依存します、そしてそれは完全にクライアント次第です。彼らは彼らのポートフォリオを埋めるものであり私ではありません。私は彼らが望むものが何でも簡単に公開できるようにシステムを構築しているだけです。

私はWordPressがタイトルのない投稿に問題を抱えているかもしれないことに気づいています、それが私が(functions.phpで)投稿にタイトルを自動設定する機能を実装した理由が何もないからです。この投稿の自動タイトルはWebサイトには表示されません。表示されている場合は省略し、そうでない場合は投稿の属性付きタイトルを表示します。

そのための機能は次のとおりです。

add_action('publish_post', 'insert_automatic_post_title', 10, 2);

function insert_automatic_post_title($postID, $post) {
    if($post->post_title === '') {
        $post->post_title = '['.get_the_date('d/m/Y @ H:i:s').']';

        if($post->post_name == $postID) {
            $post->post_name = sanitize_title($post->post_title);
        }

        $result = wp_update_post($post);
    }
}

唯一の問題は、titleが空で、コンテンツも空の場合(既にいくつかのカスタムフィールドが定義されている場合)、上記の関数は呼び出されず、投稿は公開されないため、ドラフトステータスのままになります。

私が考えることができる唯一の解決策は[empty_post]のような何らかのショートコードを作成して、彼がポストにタイトル/コンテンツを帰属させたくないときにポストコンテンツにそれを設定するように依頼することでした。そのショートコードは<!-- EMPTY POST -->のようなものを印刷するか、あるいはまったく印刷しないかもしれません。投稿内容に何かがあるという事実、上の関数が呼ばれ、自動タイトルが設定され、投稿が公開されます。

しかし、クライアントが必要以上にトラブルを起こす必要がない方法(つまり、投稿コンテンツにショートコードを挿入する必要がない方法)を探しています。できるだけ単純にしたいのです。もちろんWordPressのソースコードをめちゃくちゃにすることなく。

誰もがアクション/フィルタを使って別の方法を考えることができますか?

3
Ricardo Amaral

投稿内容、タイトル、および抜粋が空の場合 WordPressは投稿の挿入を妨げます 。最初に入力配列をフィルタリングして空の値を別の値に設定してから、後でこれらの値を空の文字列に戻すことで、WordPressをトリックすることができます。これは標準チェックをバイパスします。

add_filter('pre_post_title', 'wpse28021_mask_empty');
add_filter('pre_post_content', 'wpse28021_mask_empty');
function wpse28021_mask_empty($value)
{
    if ( empty($value) ) {
        return ' ';
    }
    return $value;
}

add_filter('wp_insert_post_data', 'wpse28021_unmask_empty');
function wpse28021_unmask_empty($data)
{
    if ( ' ' == $data['post_title'] ) {
        $data['post_title'] = '';
    }
    if ( ' ' == $data['post_content'] ) {
        $data['post_content'] = '';
    }
    return $data;
}
9
Jan Fabry

簡単で汚い解決策はjavascript/jQueryを使用することです。どの投稿タイプで実行されるのかを確認するために何らかの検出を行い、それから以下を行います。

  1. 投稿のタイトルフィールドを探す

  2. 投稿のタイトルフィールドを非表示にする

  3. 投稿のタイトルフィールドに自動入力

ワードプレスのバックエンドの大部分はとにかくJavaScriptで動作します、そしてJSなしでadminを使用しているユーザーの可能性は低いです。そしてそれが起こったとしても、あなたはある種の警告/メッセージを検出して追加することができます。

0
farinspace

これらをDIVでラップして、CSSでdisplay:noneを使用するだけです。

0
AndrettiMilas

このプラグイン( Auto Title )は古くなっていますが、私のWP 4.3.1インストールではうまく機能します。これは、あなたの簡単な説明に従って、カスタムフィールドとカテゴリ選択をタイトルに追加するのに役立ちます。

0
Pete