Sample code for 30+ languages & platforms
PureBasic

WordPress Create Tag

See more WordPress Examples

Demonstrates how to create a new tag in Wordpress, or to find the ID of an existing tag.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkHttpResponse.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkJsonObject.pb"

Procedure ChilkatExample()

    success.i = 0

    ; This example assumes the Chilkat API to have been previously unlocked.
    ; See Global Unlock Sample for sample code.

    http.i = CkHttp::ckCreate()
    If http.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; Use your WordPress login, such as "admin", not the application name.
    CkHttp::setCkLogin(http, "wp_username")
    ; Use the application password, such as "Nths RwVH eDJ4 weNZ orMN jabq"
    ; See WordPress Application Passwords Plugin
    CkHttp::setCkPassword(http, "app_password")
    CkHttp::setCkBasicAuth(http, 1)

    ; Create the tag "ChatGPT" if it does not already exist.
    json.i = CkJsonObject::ckCreate()
    If json.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckUpdateString(json,"name","ChatGPT")

    ; This will create the tag if it does not yet exist.
    ; If the tag already exists, then a 400 status code is returned.
    ; If the tag deoes not yet exist, then a 201 status code is returned.
    resp.i = CkHttpResponse::ckCreate()
    If resp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkHttp::ckHttpJson(http,"POST","https://cknotes.com/wp-json/wp/v2/tags",json,"application/json",resp)
    If success = 0
        Debug CkHttp::ckLastErrorText(http)
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(json)
        CkHttpResponse::ckDispose(resp)
        ProcedureReturn
    EndIf

    jResp.i = CkJsonObject::ckCreate()
    If jResp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckLoad(jResp,CkHttpResponse::ckBodyStr(resp))

    ; Check if the tag already exists..
    If CkHttpResponse::ckStatusCode(resp) = 400
        If CkJsonObject::ckHasMember(jResp,"code") = 1
            If CkJsonObject::ckStringOfEquals(jResp,"code","term_exists",1) = 1
                ; The tag already exists.
                Debug "The tag already exists."
                Debug "Tag ID: " + Str(CkJsonObject::ckIntOf(jResp,"data.term_id"))
                CkHttp::ckDispose(http)
                CkJsonObject::ckDispose(json)
                CkHttpResponse::ckDispose(resp)
                CkJsonObject::ckDispose(jResp)
                ProcedureReturn
            EndIf

        EndIf

        ; Fall through to check for errors.
    EndIf

    ; Check for errors.
    If CkHttpResponse::ckStatusCode(resp) <> 201
        Debug CkHttpResponse::ckBodyStr(resp)
        Debug "status code = " + Str(CkHttpResponse::ckStatusCode(resp))
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(json)
        CkHttpResponse::ckDispose(resp)
        CkJsonObject::ckDispose(jResp)
        ProcedureReturn
    EndIf

    ; We get here if the tag was created..
    Debug "The tag was created."
    Debug "Tag ID = " + Str(CkJsonObject::ckIntOf(jResp,"id"))


    CkHttp::ckDispose(http)
    CkJsonObject::ckDispose(json)
    CkHttpResponse::ckDispose(resp)
    CkJsonObject::ckDispose(jResp)


    ProcedureReturn
EndProcedure