0

JoeBlogs WordPress Wrapper でフィールドを完成させようとしています。

私のコードは次のとおりです。

private void postToWordpress(string title, string postContent,string tags, string aioTitle)
{       
    string link = this.maskedTextBox1.Text;
    string username = this.maskedTextBox2.Text;
    string password = this.maskedTextBox3.Text;

    var wp = new WordPressWrapper(link + "/xmlrpc.php", username, password);
    var post = new Post();

    post.Title = title;
    post.Body = postContent;
    post.Tags = tags.Split(',');

    string[] cf = new CustomField(); //{ ID = "name", Key = "aiosp_title", Value = "All in One SEO Title" };
    cf.ID = "name";
    cf.Key = "aiosp_title";
    cf.Value = "All in One SEO Title";

    post.CustomFields[0] = cf;

    wp.NewPost(post, false);
}

エラーは次の行にあります。

post.CustomFields[0] = cf;

そしてそれは:

JoeBlogsWordpressWrapperTests.exe で 'System.NullReferenceException' 型の未処理の例外が発生しました

追加情報: オブジェクト参照がオブジェクトのインスタンスに設定されていません。

では、JoeBlogs WordPress Wrapper を使用して C# アプリケーションから WordPress でカスタム フィールドを正しく使用/追加するにはどうすればよいでしょうか?

4

1 に答える 1

2

次のコードNullReferenceExceptionは、カスタム フィールドを修正しPost、Wordpress の に正常に保存します。

private void postToWordpress(string title, string postContent,string tags, string aioTitle)
{       
    string link = this.maskedTextBox1.Text;
    string username = this.maskedTextBox2.Text;
    string password = this.maskedTextBox3.Text;

    var wp = new WordPressWrapper(link + "/xmlrpc.php", username, password);
    var post = new Post();

    post.Title = title;
    post.Body = postContent;
    post.Tags = tags.Split(',');

    var cfs = new CustomField[] 
        { 
            new CustomField() 
            { 
                // Don't pass in ID. It's auto assigned for new custom fields.
                // ID = "name", 
                Key = "aiosp_title", 
                Value = "All in One SEO Title" 
            } 
        };

    post.CustomFields = cfs;

    wp.NewPost(post, false);
}

配列を作成し、それをieの配列であるオブジェクトのプロパティに割り当てようとしたため、NullReferenceExceptionエラーが発生していました。stringCustomFieldsPostCustomFieldCustomField[]

また、 をデータベースに保存するCustomFieldsには、とのフィールドのみを渡して、フィールドをすべてスキップする必要があります。理由は、Wordpress がフィールドを自動生成するためです (データベースの / 数値フィールドでもあります)。それが原因で通話が失敗したと思いますが、その理由についてエラーは発生しませんでした。PostKeyValueCustomField structIDIDintegerXmlRpc

上記のコードを試してみてください。動作するはずです (ローカルホストの WAMP Wordpress インストールで動作しています)。

最後に 1 つ。のCustomFieldname プロパティは と呼ばれますがKey、一意である必要はなく、一意性は強制されません。たとえば、カスタム ドロップダウン ボックスに を入力しているlist of cities場合、次のようにカスタム フィールドのセットとしてを使用Postできます。list of cities

    var cfs = new CustomField[] 
        { 
            new CustomField() 
            { 
                Key = "aiosp_title", 
                Value = "All in One SEO Title" 
            } , 
            new CustomField() 
            { 
                Key = "this is another custom field with HTML", 
                Value = "All in One SEO Title <br/> Keyword 1 <br/><p>This is some more text and html</p>" 
            } ,
            new CustomField() 
            { 
                Key = "list_of_cities", 
                Value = "San Francisco" 
            } ,
            new CustomField() 
            { 
                Key = "list_of_cities", 
                Value = "New York" 
            } 
        };

これも投稿に保存さKeyれ、フィールドの値に同じ値と異なるテキストを持つ 2 つのカスタム フィールドがありValueます。

最後になりましたが、カスタム フィールドにも HTML を保存できます (上記のように)。

于 2014-01-07T22:59:52.217 に答える